从键盘输入一个八位二进制数,显示其对应的无符号与带符号十进制
程序:
datasegment segment
array db 8 dup(0)
ssign db 'sign data','$'
uunsign db 'unsign data','$'
datasegment ends
codesegment segment
assume ds:datasegment,cs:codesegment
start:
mov ax,datasegment
mov ds,ax
mov si,0
mov cx,8
rep: mov ah,1
int 21h
sub al,30h
mov array[si],al
inc si
loop rep
mov di,7
mov bl,1
mov cx,8
mov dx,0
unsign:mov al,array[di]
mul bl
dec di
add dx,ax
mov al,bl
mov bl,2
mul bl
mov bx,ax
mov ax,0
loop unsign
mov bx,dx
lea dx,uunsign
mov ah,9
int 21h
mov dl,':'
mov ah,2
int 21h
call progdec
mov al,array[0]
cmp al,1
jne next
mov cx,256
sub cx,bx
mov bx,cx
lea dx,ssign
mov ah,9
int 21h
mov dl,':'
mov ah,2
int 21h
mov dl,'-'
mov ah,2
int 21h
call progdec
jmp done
next: lea dx,ssign
mov ah,9
int 21h
mov dl,':'
mov ah,2
int 21h
call progdec
jmp done
done: mov ah,4ch
int 21h
progdec proc
push ax
push dx
push bx
mov dl,100
mov ax,bx
div dl
cmp al,0
jne hundred
mov ax,bx
mov dl,10
div dl
cmp al,0
jne ten
mov dl,bl
add dl,30h
mov ah,2
int 21h
jmp exit
ten:
mov dl,al
add dl,30h
mov bx,ax
mov ah,2
int 21h
mov dl,bh
add dl,30h
mov ah,2
int 21h
jmp exit
hundred:
mov dl,al
mov bx,ax
add dl,30h
mov ah,2
int 21h
mov ah,bh
mov al,ah
mov ah,0
mov dl,10
div dl
mov dl,al
add dl,30h
mov bx,ax
mov ah,2
int 21h
mov dl,bh
add dl,30h
mov ah,2
int 21h
jmp exit
exit:
mov dl,' '
mov ah,2
int 21h
pop bx
pop dx
pop ax
ret
progdec endp
codesegment ends
end start
评论