**
更多习题答案见
https://github.com/Lemonreds/assembly-solution
**
编写一个程序,从键盘输入一个不长于8位的四进制数,并将所输入的数以10进制数 形式显示出来。
2017年6月5日19:42:20
data segment
carryout db 0dh,0ah,' carry out!','$'
crlfmsg db 0dh,0ah,'$'
data ends
stacks segment stack
dw 40h dup(?)
top label word
stacks ends
code segment
assume cs:code,ss:stacks,ds:data
main proc far
mov ax,data
mov ds,ax
mov ax,stacks
mov ss,ax
lea sp,top
mov cx,8
xor bx,bx
l1:
mov ah,01h
int 21h
cmp al,0dh
je input
cmp al,30h
jb l1
cmp al,33h
ja l1
and ax,11b
xchg ax,bx
mov di,4 ; SAL
mul di
jc carry
add bx,ax
jc carry
loop l1
input:
call decmial
jmp exit
carry:
lea dx,carryout
mov ah,09h
int 21
jmp exit
crlf proc near
lea dx,crlfmsg
mov ah,09h
int 21h
ret
crlf endp
decmial proc near
;in bx
mov cx,0
mov ax,bx
l5:
xor dx,dx
mov di,10
div di
push dx
inc cx
cmp ax,0
je l6
jmp l5
l6: pop dx
add dl,30h
mov ah,02h
int 21h
loop l6
call crlf
ret
decmial endp
exit:
mov ah,4ch
int 21h
main endp
code ends
end main