Как использовать writeInt на ассемблере
Хорошо известная серия чисел Фибоначчи, которая, по общему мнению, была открыта Леонардо Пизанским около 1200 года, веками ценилась за универсальные качества художников, математиков и композиторов. Каждое число в ряду после числа 1 является суммой двух предыдущих чисел:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55.,,
Напишите программу, которая генерирует и отображает первые 24 числа в серии Фибоначчи, начиная с 1 и заканчивая 46,368.
Это мой код Но на экране просто пустое место, а не целое число. Может кто-нибудь помочь мне исправить это?
Название Назначение 1 (Assignment.asm)
INCLUDELIB irvine.lib
.model small
.stack 100h
.data
num dw 1
.code
extrn writeint:proc
main proc
mov ax,1
start:
add ax,num
mov bx,10
call writeInt
xchg ax,num
loop start
main endp
end main
0 ответов
Поздний ответ, но я не вижу такого простого вопроса без ответа:-)
Твой IRVINE.LIB
не оригинал IRVINE16.LIB
Кипа Ирвина. Кто-то изменилIRVINE16.asm
и возможно FLOATIO.ASM
и перекомпилировал его. Итак, я не могу связать ваш код и не могу протестироватьWriteInt
. Вы можете загрузить все это с домашней страницы Ирвина: http://www.kipirvine.com/asm/gettingStartedVS2017/Irvine.zip
Я вижу три ошибки:
В начале основной процедуры необходимо инициализировать DS
:
mov ax, @data
mov ds, ax
LOOP
петли CX
раз. Итак, инициализируемCX
первый:
...
mov ax,1
mov cx, 24
start:
add ax,num
...
loop start
...
По окончании процедуры необходимо выйти из программы:
mov ax, 4C00h
int 21h