80x86汇编习题
题目描述:将BX中的无符号数以十进制的形式输出
思路:
1,往bx写入一个数
2,将BX内容放到AX中,与DX一起做除数运算
3,清空DX,因为每次除完余数都会在DX。因为除数不能是立即数,借个寄存器SI来用,把除数10放到SI中
4,余数进栈,计数器加一,看看商是否为0,为0则表示除到了最后一位,可以结束,否则循环
5,出栈到DX,方便打印(打印的是DL的内容),加上'0'对应的aciil码,打印输出,按CX的次数循环
DATAS SEGMENT
VAR DW 6C3BH
DATAS ENDS
STACKS SEGMENT
DW 100H DUP(?)
TOP LABEL WORD
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,STACKS
MOV SS,AX
LEA SP,TOP ;初始化
MOV BX,VAR ;往bx写入一个数
XOR CX,CX ;清空计数器
MOV AX,BX ;将BX内容放到AX中,与DX一起做除数运算
L1:
XOR DX,DX ;清空DX,因为每次除完余数都会在DX
MOV SI,10 ;因为除数不能是立即数,借个寄存器SI来用,把除数10放到SI中
DIV SI
PUSH DX ;余数进栈
INC CX ;计数器加一
CMP AX,0 ;看看商是否为0,为0则表示除到了最后一位,可以结束
JNE L1 ;否则循环
L2:
POP DX ;出栈到DX,方便打印(打印的是DL的内容)
ADD DL,'0' ;加上'0'对应的aciil码
MOV AH,2
INT 21H ;打印输出
LOOP L2 ;按CX的次数循环
MOV AH,4CH
INT 21H
CODES ENDS
END START
;输入内容:6C3BH
;输出内容:27707