組合語言學習之路(7)------------輸入10進位制數,將其轉換為2進位制數,存放在ax中,再將其轉換為ASCII碼並輸出
阿新 • • 發佈:2019-01-09
data segment
inf1 db "please input a number(1-361):$"
ibuf db 7,0,6 dup(0)
obuf db 6 dup(0)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea dx,inf1
mov ah,09h
int 21h
lea dx,ibuf //鍵入一個十進位制數
mov ah,0ah
int 21h
mov cl,ibuf+1 //十進位制的位數送給CX
mov ch,0
lea si,ibuf+2 //指向輸入的第一個字元
again: //((0x10+a4)x10+...)x10+a0
mov dx,10
mul dx
sub byte ptr[si],30h
add al,[si]
inc si
loop again
lea bx,obuf+5
mov byte ptr[bx],'$'
mov cx,10 //做(DX):(AX)/10運算
loop1:
mov dx,0 //被除數高16位清0
div cx
add dl,30h //將DL中一位十進位制數轉換為ASCII碼
dec bx
mov [bx],dl
or ax,ax
jnz loop1 //判斷商是否為0,不為0繼續
dec bx
mov byte ptr[bx],0ah
dec bx
mov byte ptr[bx],0dh
mov dx,bx
mov ah,09h
int 21h
//顯示轉換得到的十進位制數
mov ah,4ch
int 21h
code ends
inf1 db "please input a number(1-361):$"
ibuf db 7,0,6 dup(0)
obuf db 6 dup(0)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea dx,inf1
mov ah,09h
int 21h
lea dx,ibuf //鍵入一個十進位制數
mov ah,0ah
int 21h
mov cl,ibuf+1 //十進位制的位數送給CX
mov ch,0
lea si,ibuf+2 //指向輸入的第一個字元
mov ax,0 //開始將十進位制數轉換為二進位制數
mov dx,10
mul dx
sub byte ptr[si],30h
add al,[si]
inc si
loop again
lea bx,obuf+5
mov byte ptr[bx],'$'
mov cx,10 //做(DX):(AX)/10運算
loop1:
mov dx,0 //被除數高16位清0
div cx
add dl,30h //將DL中一位十進位制數轉換為ASCII碼
dec bx
mov [bx],dl
or ax,ax
jnz loop1 //判斷商是否為0,不為0繼續
dec bx
mov byte ptr[bx],0ah
dec bx
mov byte ptr[bx],0dh
mov dx,bx
mov ah,09h
int 21h
//顯示轉換得到的十進位制數
mov ah,4ch
int 21h
code ends
end start