如何在汇编语言中使用writeInt

时间:2017-09-18 00:43:32

标签: assembly x86-16 irvine16

  

众所周知的斐波那契数字系列,据说是由   比萨的莱昂纳多大约在1200年左右,已被评估了几个世纪   因其艺术家,数学家和作曲家的普遍品质。   数字1后面的系列中的每个数字是两者之和   以前的数字:

     

1,1,2,3,5,8,13,21,34,55。 。

     

编写一个程序,生成并显示前24个数字   Fibonacci系列,从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 

1 个答案:

答案 0 :(得分:0)

一个较晚的答案,但我看不到这样一个简单的未解决的问题:-)

您的IRVINE.LIB不是Kip Irvine的原始IRVINE16.LIB。有人修改了IRVINE16.asm,也许还有FLOATIO.ASM并重新编译了它。因此,我无法链接您的代码,也无法测试WriteInt。您可以从Irvine的主页上下载全部内容: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