在汇编里输入十进制,怎样输出十进制??

刚学汇编语言,不知道怎么做,高手帮忙啊!!

当输出一位十进制的时候,情况比较简单

add ax,30H;转换为ASCII码
mov dx,ax
mov ah,2
int 21H ;显示十进制数数

当输出两位数以上的时候,就要注意压栈与出栈了:
除数是8位的时候要压AX,除数是16位时候要压DX

下面是一个显示1加到100的程序,显示位四位数字
供你参考,程序是我自己写的:

DATA SEGMENT
MSG DB '1+2+3+4+5+...+99+100=$'
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START:
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
mov dx,offset msg
mov ah,9
int 21h
mov cx,100
mov ax,0
mov bx,0
one:
inc bx
adc ax,bx
dec cx
jnz one
mov bx,1000 ;相除
div bx
push dx
add al,30H ;求ASCII值
mov dl,al ;DOS系统功能调用,显示
mov ah,2
int 21H
pop dx
mov ax,dx
mov dx,0
mov bx,100 ;相除
div bx
push dx
add al,30H ;求ASCII值
mov dl,al ;显示
mov ah,2
int 21H
pop dx
mov ax,dx
mov dx,0
mov bx,10 ;相除
div bx
push dx
add al,30H ;求ASCII值
mov dl,al ;显示
mov ah,2
int 21H
pop dx
mov ax,dx
add ax,30H
mov dx,ax
mov ah,2
int 21H
HLT
code ends
end start
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-20
SHOWB MACRO DA
LOCAL ONE,TWO,THREE
;----------------------
PUSH AX
PUSH BX
PUSH CX
PUSH DX
;----------------------
ONE: MOV AL,DA
MOV BL,100
AND AX,00FFH
DIV BL
MOV BH,AH
MOV DL,AL
ADD DL,30H
CMP DL,30H
JZ TWO
MOV AH,02H
INT 21H
;----------------------
TWO: MOV BL,10
MOV AX,0
MOV AL,BH
DIV BL
MOV BH,AH
MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
;----------------------
THREE: MOV DL,BH
ADD DL,30H
INT 21H
POP DX
POP CX
POP BX
POP AX
;----------------------
ENDMTop

这是一段宏指令,使用时比如要输出20,就用SHOWB 20就可以了
相似回答