二進位制轉換16進位制二進位制轉換16進位制彙編

2021-05-20 02:46:33 字數 4588 閱讀 8855

1樓:快樂

16進位制有數字0~9,還有a~f,一共16個數碼。轉換的時候,先統一加上30h,然後要判斷是數字還是字母,數字的ascii碼和字母的ascii碼可不是一樣的哦。所以和3ah比較。

如果是數字,不變;如果是字母,再加上7h(你的程式是用大寫字母表示,若是小寫字母,那應該再加上27h)

2樓:匿名使用者

數符在輸出時是按其asiic碼在字型檔中找到**後輸出的。16進位制有數字0-9,還有字母a-f,一共16個數符。數字0-9對應的asiic碼為30h-3ah,字母a-f對應的asiic碼為42h-48h(a與9之間相差7)。

先將轉換所得的數值加30h,然後判斷是數字還是字母,如果值不大於3ah則該位16進位制數是數字0-9,如大於3ah則該位16進位制數是字母a-f,其asiic碼應該加上7(若是小寫字母a-f,則應該加上27h)。

3樓:匿名使用者

加30h是為了轉化為ascii碼,和3ah比較是為了判斷對應的是否是a…f的十六進位制,而加7h,則是為了轉化字元a…f的ascii碼值。

彙編二進位制轉十六進位制為什麼要加07h

4樓:匿名使用者

這是十六進位制數轉成顯示時使用

的ascii碼時的處理中的一個問題。

十六進位制數使用0~f共16個字元表示。

我們知道,「0」這個字元的ascii碼值是30h,「1」這個字元的ascii碼值是31h,…… ,「9」這個字元的ascii碼值是39h。當某一位十六進位制的數的值在0~9範圍內的時候,將這個數的「值」轉成它顯示的「字」,即轉成ascii碼,只需要加30h即可。

比如,一個位元組儲存的數為05h,加上30h後變成35h,就是「5」這個字元了。

十六進位制數所用的字元中除了「0」 ~ 「9」這幾個數字字元外,還有「a」 ~「f」這幾個字母。字母轉換時的處理要求與數字不一樣。

當一個位元組儲存的數為0ah的時候,要轉成字母「a」,需要加上37h,才能得到「a」的ascii碼值 41h。

同樣的,0bh要轉成「b」(42h),也要加上37h。

也就是說,0-9的值轉成對應的數字字元,要加30h。a-f的值轉成對應的字母,加了30h還不夠,還需要再加上一個 7 ,結果才對。

所以,對一個00h ~0fh之間的數,要用十六進位制格式顯示,就這麼處理:

1. 不管它需要用數字表示還是字母表示,先加上30h再說。

2. 加過30h以後,檢查它是不是「0」 ~ 「9」之間,是的話就只需要用數字表示,可以直接送去顯示了。

3. 若加過30h以後的結果在「9」(39h)以上,說明是字母。它們的值是在3ah ~3fh範圍內。

對它們,再加上一個 7 ,就可以變成 41h("a") ~ 46h("f"),這樣送去顯示也就對了。

組合語言將二進位制轉化為十六進位制的功能 ,解釋下列**每一句在二進位制轉化為十六進位制中起到什麼作用

5樓:匿名使用者

main proc far

assume cs:a1

start: push ds

sub ax,ax

push ax

mov bx,0110 1101 0011 0111b ;6d37h

mov ch,4

b1: mov cl,4

rol bx,cl ;將bx中的數迴圈左移4位,也就是把bx最高4位,放到bx的最低4位上去。

mov al,bl ;將低8位放入al

and al,0fh ;取低4位

add al,30h ;加上30h 從這裡開始將4位二進位制數轉成16進位制ascii碼,

;0--的ascii碼是30h…9是39h,a是41h,b是42h…f是46h

cmp al,3ah ;加結果是不是少於3a

jl b2 ;是的話,表示是0-9之中數

add al,7h ;否則還要加上7,變成對應的a或b、c、d、e、f

b2: mov dl,al ;al是轉換好的一位16進位制數的ascii碼

mov ah,2

int 21h ;顯示到螢幕

dec ch

jnz b1 ;因為bx中其有4位16進位制數,所以要處理4次。這裡是判斷處理完4次沒,如果沒有,就繼續處理下一個數

retmain endp

a1 ends

end start

這個程式的功能是將bx中的0110 1101 0011 0111b(6d37h)以16進位制顯示在螢幕上。

「顯示在螢幕」的準確說法是:輸出到系統標準控制檯上。

不知道我說清楚沒,希望能幫到你

6樓:匿名使用者

main proc far

承擔cs:a1

start:push ds

sub ax,ax

的push ax

mov bx,0110 1101 0011 0111乙; 6d37h mov ch,4

rol bx,cl b1:mov cl,向左旋轉bx四,這是bx,bx最高4,最低的4最多。

mov al,bl低8到al

al,0fh;低4

add al,30h 30h耦合的4位二進位制數,從這裡到十六進位制的ascii** br /> - ascii碼30h ... 9 39h,a是41h,b是42h ... f 46h

cmp al,3ah增加的結果是不低於3a

jl b2;,那麼,這是0-9之間

add al,7h,否則加7,進相應的a或b,c,d,e,f

b2:mov dl,al,al mov ah是一個十六進位制數轉換好的ascii**

int 21h;顯示在螢幕上

dec ch

的jnz b1 bx是4個十六進位制數,所以要處理的四倍。這裡是判斷完沒有,如果沒有,繼續處理下一個數字

retmain endp

a1 end結束的開始

這個程式的功能是bx 0110 1101 0011 0111 b(6d37h)以十六進位制顯示在螢幕上。準確的說法是:

「顯示在螢幕上」輸出到系統的標準控制檯上。

不認識我,顯然沒有,我希望你能幫助

7樓:做而論道

在計算機裡面,二進位制和16進位制,是等效的,不需要轉換。

也不可能轉換。

可以發生變化的,只有顯示。

組合語言中二進位制轉換成八進位制,十六進位制的原理解釋,就是左移幾位,還有什麼迴圈幾位什麼的

8樓:紛採

實際上計算機裡面的都是二進位制。要轉換為其他進位制,其實是以一個2#數轉換為相應的字串然後輸出。巧合的是4位2#正好對應1位16#,因為2^4=16,8#同理,所以可以用移位實現一位一位的轉換,也就是產生一個一個的字元。

那麼為什麼要移位?直接轉換不更好?問題程式設計就是這樣一個東西,一種順序,選擇,迴圈結構的工作去「簡化」(也可以說計算機化,因為這樣計算機會比較方便,特別是迴圈)。

所以(16#)演算法是這樣的把最高位的4位移到最右邊,也就是算數左移4位。然後將這個數變成相應16#數的asii碼,然後輸出該字元,然後重複,直到所有的字元都轉換完畢。**書上有吧,就不給了。

(8#同理)

彙編指令如何轉換為二進位制或者十六進位制?

9樓:匿名使用者

這是由於晶片bai廠商規定的機器指

du令格式zhi,每種晶片面向市場dao,都會有其支援的回指令集,答跟詳細的有彙編指令對於的機器碼格式。雖然同樣是mov指令,但其運算元不同時,定址方式不同時,其對應著不同的機器碼格式,軟體**商根據這個資料提供相應的編譯器將不同的彙編指令編譯成機器指令。。。不同指令如mov與sub,或同一指令不同運算元如mov ax,bx與mov ax,10h其都有具體的翻譯格式,和執行週期(即執行時間),阿門。。。

你的問題牽扯的是《晶片的架構》或《晶片的彙編指令機器碼格式》主題,阿門。。。

10樓:匿名使用者

一種是手工查表進

來行源轉換,找到針對cpu的彙編碼的書,bai根據彙編語句du查對應的機zhi

器碼。另一種一種是用編dao譯軟體,對應於x86的,有a**程式可以編譯彙編程式,對應s51,也有專門的彙編編譯程式

x86系統如果是少量的

用debug軟體,可以實現

用其中的a命令,輸入彙編語句

然後用d命令就可以看到16進位制的機器碼

11樓:楚小雪丶

這是編譯器的工作 可以用od來把彙編指令轉換成機器碼

12樓:匿名使用者

一個彙編助記符號代表一個八位二進位制數

你看看51的指令集就知道了

13樓:其穎包書雲

與跳轉最為接近bai的當然是goto(也就是那些du結構化zhi者最為痛恨的語句,

dao但是有時候沒有它還真專不行)。

對於屬不同函式段的話就很難goto了,可以變通一下,把要跳轉的指標壓入堆疊,然後直接return就跑過去了。

以上兩種均屬於破壞結構化設計的做法,應慎用。

二進位制資料表示方法,二進位制和16進位制分別用啥符號表示的?

計算機內部的資料表示有兩種形式,一種是並行資料,有一位二進位制就用一條導線專傳屬送,在內部儲存時是用儲存器,同樣,一位二進位制數就需要一位儲存器來儲存,這樣的話,就不會出現你所說的那樣的錯誤了。當然了,在計算機內部傳送資料是有非常嚴格的時間順序的,在時間上不會出現錯誤,在資料位數上也不會出現錯誤的。...

二進位制和十六進位制怎麼轉換,什麼是二進位制 十六進位制有什麼區別,普通數怎麼轉化為二進位制和十六進位制

以二進位制數的小數點為界,整數部分從右至左每4位分開,最左邊不足4位時前面用0補齊 小數部分從左至右每4位分開,最右邊不足4位時後面用0補齊。然後按每4位對應的十六進位制符號寫出來,小數點位置不變就ok了。例如要將11010010110111.0011101化為十六進位制的步驟如下 以小數點為界左右...

二進位制如何轉換成八進位制二進位制怎麼轉化成其他進位制詳細過程

先了解二進位制 數與八進位制數之間的對應關係。有個方法,把二進位制的數從右往左,三位一組,不夠補0 列 111 4 2 1 7 11001拆分為 001和011,001 1,011 2 1 3 那麼11001轉換為八進位制就是31.擴充套件資料二進位制轉換為十六進位制 參照二進位制轉八進位制,但是它...