真题组装顺序
假设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子程序定义结束
代码结束
结束开始