一.程式設計環境
emu8086
二.功能
彙編2^16以下數字十進位制轉二進位制
在輸入回車時,結束輸入
在輸入q或者q時結束程式
遇到非法字元時,重新輸入
三.**
data segment
err1 db "error input!please restart!$"
jieshu db "get q or q,exit!$"
data ends
code segment
start:
mov ax,data
mov ds,ax
p1: call read ;輸入函式
mov ah, 02h ;歸位 換行
mov dl, 0dh
int 21h
mov ah, 02h
mov dl, 0ah
int 21h
mov cx,16
print:
cmp bh,7fh ;第一位是不是1
ja print1
mov ah, 02h
mov dl,'0'
int 21h
shl bx,1
loop print
jmp p2
print1:
mov ah, 02h
mov dl,'1'
int 21h
shl bx,1
loop print
p2:
mov ah, 02h ;歸位 換行
mov dl, 0dh
int 21h
mov ah, 02h
mov dl, 0ah
int 21h
jmp p1
read proc ;讀入函式read
restart:
mov bx,0
newchar:
mov ah,1 ;輸入乙個字元到al
int 21h
xor ah,ah
cmp al,0dh ;輸入回車,則跳出
je exit
cmp al,51h ;將bl與q、q的ascii碼比較,如果相等,跳至最末
je finalend
cmp al,71h
je finalend
cmp al,'0' ;輸入『0'-'9'之外的字元,重輸
jb exit2
cmp al,'9'
ja exit2
sub al,'0' ;將字元轉化為數字
xchg bx,ax ;ax,bx值交換,ax:之前結果,bx:輸入數字
mov cx,0ah
mul cx ;al*10->ax.
xchg bx,ax
add bx,ax
jmp newchar ;相當於bx=bx*10+ax
exit2:
mov ah, 02h ;歸位 換行
mov dl, 0dh
int 21h
mov ah, 02h
mov dl, 0ah
int 21h
lea dx,err1
mov ax,0900h
int 21h
mov ah, 02h ;歸位 換行
mov dl, 0dh
int 21h
mov ah, 02h
mov dl, 0ah
int 21h
jmp restart ;重新輸入
exit:
retread endp
finalend:
mov ah, 02h ;歸位 換行
mov dl, 0dh
int 21h
mov ah, 02h
mov dl, 0ah
int 21h
lea dx,jieshu
mov ax,0900h
int 21h
code ends
end start
二進位制如何轉十進位制,十進位制如何轉二進位制
學計算機的朋友剛開始學習時都要接觸進製之間的轉換,二進位制 十進位制 八進位制 十六進製制等,這個是很枯燥的,轉來轉去就轉矇圈了,別蒙別蒙,今天咱們乙個乙個搞定,看看二進位制和十進位制之間如何相互轉換的。轉成二進位制主要有以下幾種 正整數轉二進位制,負整數轉二進位制,小數轉二進位制 1 正整數轉成二...
二進位制如何轉十進位制,十進位制如何轉二進位制
二進位制如何轉十進位制,十進位制如何轉二進位制 1 正整數轉成二進位制。要點一定一定要記住哈 除二取餘,然後倒序排列,高位補零。也就是說,將正的十進位制數除以二,得到的商再除以二,依次類推知道商為零或一時為止,然後在旁邊標出各步的餘數,最後倒著寫出來,高位補零就ok咧。哎呀,還是舉說明吧,比如42轉...
二進位制轉十進位制
二進位制轉十進位制方法很多,如字元陣列,指標法等 下面用字串函式的方法實現 二進位制轉十進位制 主要用 到 string函式性質及pow求乙個數的n次方的函式過載 by adengou 2010.08.04 win7 dev c 5.0 vs 2010 通過 include include incl...