1. 程式人生 > >組合語言學習之路(7)------------輸入10進位制數,將其轉換為2進位制數,存放在ax中,再將其轉換為ASCII碼並輸出

組合語言學習之路(7)------------輸入10進位制數,將其轉換為2進位制數,存放在ax中,再將其轉換為ASCII碼並輸出

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         //指向輸入的第一個字元

                mov ax,0                //開始將十進位制數轉換為二進位制數

           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

                end start