1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| DATAS SEGMENT num1 db 'Please input a number: $' num2 db 'Please input another number: $' num3 db 'The sum of two numbers: $' cr db 10,13,'$' er db 'The input error!',13,10,'$' bin1 dw 10 dup(?) buf1 db 6 dup(0) bin2 dw 10 dup(?) DATAS ENDS
CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX lea dx,num1 mov ah,9 int 21h mov bx,0 input1: mov ah,1 int 21h
cmp al,13 je cn
sub al,30h jb error cmp al,10 jb transbin1 jmp error
transbin1: mov ah,0 mov cl,4 shl bx,cl add bx,ax mov bin1,bx jmp input1
cn: mov bx,0 lea dx,num2 mov ah,9 int 21h
input2: mov ah,1 int 21h
cmp al,13 je en
sub al,30h jb error cmp al,10 jb transbin2 jmp error
transbin2: mov ah,0 mov cl,4 shl bx,cl add bx,ax mov bin2,bx jmp input2
error: lea dx,er mov ah,9 int 21h jmp start
en:;转换十进制前的准备 mov ax,bin1 add ax,bin2 ;将bin中的二进制数传送给ax mov bx,16;bx=16 mov si,5;si=5
transdec: mov dx,0 div bx cmp dl,10 jb next sub dl,10 add [buf1+si-1],1 next: add [buf1+si],dl sub si,1 ja transdec
lea dx,num3 mov ah,9 int 21h
output: inc si mov dl,[buf1+si] add dl,30h
mov ah,2 int 21h cmp si,5 jb output
lea dx,cr mov ah,9 int 21h
MOV AH,4CH INT 21H CODES ENDS END START
|