真题组装顺序

;我刚刚写的。呵呵,考过了。希望对你有帮助。为了您的方便,我添加了一些注释。如果你有任何问题,请问我。...

假设CS:代码,DS:数据

数据段

缓冲数据库10

DB?

DB 10 DUP(?)

结果DW?

结果_显示DB 10 DUP(?)

数据结束

代码段

开始:

MOV斧,数据

MOV DS,AX

LEA DX,BUFF

MOV啊,0AH

INT 21H

MOV迪,0

l0:;一个* * *由多少个数字组成?

CMP字节指针DS:[DI+2],0DH

JZ围棋

公司DI

JMP 10

去:;计算第n个斐波那契数,并将数字字符串转换为十进制数。

MOV BL,10

MOV AX,1

MOV斯、迪;对于判断输入是否只有一个数字很有用。

迪MOV·CX

L2:推斧头

子字节PTR DS:[DI+1],30H

多字节指针DS:[DI+1]

添加结果,AX

爆破筒

MUL BL

十二月二日

环路L2

;有两种情况:1。输入是1;2.输入不是1

CMP SI,1

JNZ L7

CMP字节指针结果,1

JNZ L7

MOV斧,结果

JZ L4

MOV AX,1

MOV·BX,0

MOV·CX,结果

十二月CX

L3:;第n个斐波那契数存储在AX中。

推斧

加上斧头,BX

波普·BX

回路L3

L4:

;显示这个斐波那契数

MOV DX,0

LEA SI,结果显示

MOV迪,0;用DI表示一个* * *里有多少个数字?

L5:

MOV CX,10

打电话给DIVDW

添加CL,30H

MOV DS:[SI],CL

CMP最大值,0

JZ·L6

公司SI

公司DI

JMP L5

L6:

MOV国防部长,国防部长

MOV啊,2

INT 21H

CMP DI,0

JZ还好吗

十二月四日

十二月二日

JMP·L6

好的:

MOV斧头,4C00H

INT 21H

;参数:(AX)=DWORD类型低位16位数据。

;(DX)=DWORD类型高16位数据。

;(CX)=除数

;返回:(DX)=结果的高16位,以及(AX)=结果的低16位。

;(CX)=余数

;32位除以16位可以防止溢出!

div dw:;子程序定义开始,它的作用是分隔数字。

推斧

MOV AX,DX

MOV DX,0

CX分部

MOV·BX,斧头

爆破筒

CX分部

MOV CX,DX

BX MOV DX

RET子程序定义结束

代码结束

结束开始