Как использовать 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
Другие вопросы по тегам