马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 BellXu 于 2017-8-21 14:46 编辑 ASSUME CS:CODES,DS:DATAS,SS:STACKS
DATAS SEGMENT
DW 123,12666,1,8,3,38
DATAS ENDS
STACKS SEGMENT
DW 200 DUP(0)
STACKS ENDS
CODES SEGMENT
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
MOV SP,0
MOV SI,0
MOV DI,0
MOV AX,0B800H
MOV ES,AX
MOV BX,10 ;历次除数
MOV CX,6 ;显示6个数串。题中要求用JCXZ,但模板并未在data中加0?
XOR DX,DX
L: MOV AX,DS:WORD PTR [SI]
PUSH CX ;保护CX,子程序中有用。
XOR CX,CX
CALL DTOC
POP CX ;还原CX
ADD SI,2
LOOP L
MOV AH,4CH
INT 21H
DTOC:
DIV BX
ADD DX,30H
PUSH DX ;余数堆栈,得以“倒叙”显示
XOR DX,DX
INC CX
CMP AX,0
JZ SHOW ;被除数为0则开始显示
JMP DTOC
SHOW:
POP AX
MOV ES:BYTE PTR [DI],AL
INC DI
MOV ES:BYTE PTR [DI],07 ;注意显存每个字符占一字节,07是默认黑底白字体
INC DI
LOOP SHOW
MOV ES:BYTE PTR [DI],32 ;每个数串间加空格
INC DI
MOV ES:BYTE PTR [DI],07
INC DI
RET
CODES ENDS
END START
自觉冗长可简化,欢迎讨论交流 |