实验10第3题
本帖最后由 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
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 ,AL
INC DI
MOV ES:BYTE PTR ,07 ;注意显存每个字符占一字节,07是默认黑底白字体
INC DI
LOOP SHOW
MOV ES:BYTE PTR ,32 ;每个数串间加空格
INC DI
MOV ES:BYTE PTR ,07
INC DI
RET
CODES ENDS
END START
自觉冗长可简化,欢迎讨论交流{:5_92:}
页:
[1]