如何用匯程式設計序實現二進位制,十進位制,十六進位制之間的轉換

2021-03-03 22:26:36 字數 5868 閱讀 1278

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