答案:;从键盘上输入一个十进制无符号整数,将它用八进制格式输出(汇编语言)
;用MASM 5.0编译通过
data segment
mess db ' (10) >>===>> (8) $'
BUF DW 0 ;每次输入的数暂存
data ends
code segment
assume cs:code, ds:data
main proc far
start:
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
;-------------------------
MOV AX,0
MOV BUF,AX
IN_1:
MOV AH,08
INT 21H ;输入在AL中
CMP AL,'0'
JB NO_09
CMP AL,'9'
JA NO_09
MOV AH,2 ;输入的是0-9,显示之
MOV DL,AL
INT 21H
SUB AL,30H ;将输入在AL中的ASCII码转成数字
MOV AH,0
PUSH AX
MOV BX,BUF
MOV AX,10
MUL BX ;BUF * 10 结果在DX:AX中 (DX=0)
POP BX
ADD AX,BX ;AX <== BUF * 10 + 新输入的1位数字
MOV BUF,AX ;保存
JMP IN_1 ;输入该数字的下一位
NO_09: ;输入的非0-9
CMP AL,0DH ;是回车符吗?
JE YES_0D ;是转
JMP IN_1 ;不是则输入该数字的下一位
YES_0D: ;是回车符
mov ah,9
mov dx,offset mess
int 21h
mov ax,buf
MOV CX,0
DIV_1:
MOV DX,0
MOV SI,8
DIV SI
ADD DL,30H
INC CX
PUSH DX
CMP AX,0
JNZ DIV_1
DISP_1:
MOV AH,2
POP DX
INT 21H
LOOP DISP_1
MOV AH,4CH
INT 21H
MAIN ENDP
;==================
code ends
end start
上一个:如何用汇编语言实现闪烁文字的效果?
下一个:89c51 实现定时器 汇编语言 定时20秒