1樓:匿名使用者
二進位制和bai十六進位制轉換du,也就是將二進zhi制按四位劃分一段,然後用十六進dao製表示,末尾加上專h就可以了。屬
十六進位制轉為二進位制則將十六進位制的每一位用二進位制表示,為四位一段,按順序寫下來末尾加上b就是了。
十進位制麼,就是日常用的自然數,計算出二進位制或十六進位制的數值,就可以了。當然末尾可以加上d或什麼也沒有。
組合語言編寫一個程式,實現十進位制、十六進位制和二進位制之間的轉換
2樓:匿名使用者
code segment
assume cs:code
strr db 18
strrn db ?
strrs db 18 dup(?)start: push cs
pop ds
push cs
pop es
call input
call lfcr
call lfcr
mov bx,10
call dspaxx
call lfcr
mov bx,16
call dspaxx
call lfcr
mov bx,2
call dspaxx
mov ah,4ch
int 21h
;******************************==input proc nearpush bx
push cx
push dx
push si
push di
push bp
pushf
mov ah,0ah
lea dx,strr
int 21h
lea si,strr
mov cl,[si+1]
xor ch,ch
add si,2
cmp byte ptr[si],'b'
je @b
cmp byte ptr[si],'h'
je @h
cmp cx,5
jbe @1
mov cx,5
@1:mov ax,0
@2:shl ax,1
mov bx,ax
shl ax,1
shl ax,1
add ax,bx
mov bl,[si]
and bl,0fh
xor bh,bh
add ax,bx
inc si
loop @2
jmp @iend
@b:dec cx
inc si
cmp cx,16
jbe @b1
mov cx,16
@b1:
mov ax,0
@b2:
shl ax,1
mov bl,[si]
and bl,1
xor bh,bh
add ax,bx
inc si
loop @b2
jmp @iend
@h:dec cx
inc si
cmp cx,4
jbe @h1
mov cx,4
@h1:
mov ax,0
@h2:
shl ax,1
shl ax,1
shl ax,1
shl ax,1
mov bl,[si]
cmp bl,'9'
jbe @h3
sub bl,7
@h3:
and bl,0fh
xor bh,bh
add ax,bx
inc si
loop @h2
@iend:
popf
pop bp
pop di
pop si
pop dx
pop cx
pop bx
retinput endp
;******************************==; 輸出ax的值,輸出的進位制在bx中設定,bx=2~16dspaxx proc nearpush ax
push bx
push cx
push dx
pushf
xor cx,cx
; mov bx,16
@dspaxx_1:
xor dx,dx
div bx
inc cx
or dx,30h
push dx
cmp ax,0
jne @dspaxx_1
mov ah,2
@dispaxx_2:
pop dx
cmp dl,3ah
jb @dispaxx_3
add dl,7
@dispaxx_3:
int 21h
loop @dispaxx_2
mov dl,32
int 21h
popf
pop dx
pop cx
pop bx
pop ax
retdspaxx endp
;******************************=lfcr proc near
push ax
push dx
mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h
pop dx
pop ax
retlfcr endp
;******************************===dspax proc nearpush ax
push bx
push cx
push dx
pushf
xor cx,cx
mov bx,10
@dspax1:
xor dx,dx
div bx
inc cx
or dx,30h
push dx
cmp ax,0
jne @dspax1
mov ah,2
@dispax2:
pop dx
int 21h
loop @dispax2
mov dl,32
int 21h
popf
pop dx
pop cx
pop bx
pop ax
retdspax endp
;******************************====
code ends
end start
3樓:76很感人
人物圖(版本三)人物圖(版本三)(7)
怎麼用組合語言實現二進位制與十進位制和十六進位制的轉換?
4樓:匿名使用者
這是我曾經寫的一個程式,這段**的作用是迴圈4次輸入4位16進位制數,我把它轉換位2進位制數,方法就是對於每一位數(現在是ascii碼)轉化為0——9或a——f的數,然後左移4位,放到一個變數裡面,迴圈就行了,也就是16進位制轉換為2進位制的基本演算法,左移4位,不斷的進行。。
xor bx,bx ;bx裡面放輸入後經轉換的2進位制數mov cl,04 ;轉換的時候移位次數
mov ah,01
mov di,4 ;迴圈4次輸入
lp1: shl bx,cl ;由於最高位也只移3個4位,所以就放在前面。
int 21h
sub al,30h ;輸入的1位數與0的ascii比較cmp al,9
jbe deal1 ;不小於9的為a,b,c等值sub al,7 ;根據位置關係再減7
deal1: add bl,al ;轉換後的數存入bldec di
cmp di,0
jnz lp1
彙編指令如何轉換為二進位制或者十六進位制?
5樓:匿名使用者
這是由於晶片bai廠商規定的機器指
du令格式zhi,每種晶片面向市場dao,都會有其支援的回指令集,答跟詳細的有彙編指令對於的機器碼格式。雖然同樣是mov指令,但其運算元不同時,定址方式不同時,其對應著不同的機器碼格式,軟體**商根據這個資料提供相應的編譯器將不同的彙編指令編譯成機器指令。。。不同指令如mov與sub,或同一指令不同運算元如mov ax,bx與mov ax,10h其都有具體的翻譯格式,和執行週期(即執行時間),阿門。。。
你的問題牽扯的是《晶片的架構》或《晶片的彙編指令機器碼格式》主題,阿門。。。
6樓:匿名使用者
一種是手工查表進
來行源轉換,找到針對cpu的彙編碼的書,bai根據彙編語句du查對應的機zhi
器碼。另一種一種是用編dao譯軟體,對應於x86的,有a**程式可以編譯彙編程式,對應s51,也有專門的彙編編譯程式
x86系統如果是少量的
用debug軟體,可以實現
用其中的a命令,輸入彙編語句
然後用d命令就可以看到16進位制的機器碼
7樓:楚小雪丶
這是編譯器的工作 可以用od來把彙編指令轉換成機器碼
8樓:匿名使用者
一個彙編助記符號代表一個八位二進位制數
你看看51的指令集就知道了
9樓:其穎包書雲
與跳轉最為接近bai的當然是goto(也就是那些du結構化zhi者最為痛恨的語句,
dao但是有時候沒有它還真專不行)。
對於屬不同函式段的話就很難goto了,可以變通一下,把要跳轉的指標壓入堆疊,然後直接return就跑過去了。
以上兩種均屬於破壞結構化設計的做法,應慎用。
如何用VHDL實現十進位制轉變為二進位制,個位,十位和百位分開輸
library ieee use ieee.std logic 1164.all use ieee.std logic arith.all use ieee.std logic unsigned.all entity conv is port clk in std logic in16 in std...
用c語言程式設計,實現十進位制和二進位制的相互轉化
include int getnumber char s,int n return k else return 0 void exchange char s,int n,int k for i 0 ivoid main include int main printf 二進位制為 i for i 0 ...
請問十進位制如何轉換成二進位制,二進位制數如何轉換成十進位制數?
還是寫基數,舉個複雜些的例子,你可以選擇僅涉及整數的部分來用 95.625轉換成二進位制 先寫二進位制各位基數 從1開始寫,右邊寫個小數點,先向左邊逐位寫,每位是右邊位陣列乘以2,寫到比95大為止 128 64 32 16 8 4 2 1.然後向左邊寫,每項是左邊項除以2,寫 三 四項即可 128 ...