彙編2 16以下數字十進位制轉二進位制

2021-10-10 20:46:10 字數 2135 閱讀 8814

一.程式設計環境

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...