从键盘输入一个八位二进制数,显示其对应的无符号与带符号十进制 程序: 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,0unsign: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 donenext: 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 exitexit: mov dl,' ' mov ah,2 int 21h pop bx pop dx pop ax ret progdec endp codesegment ends end start

评论