|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
复制代码
自觉冗长可简化,欢迎讨论交流 |
|