彙編addAL0040H BL0026H為什麼在彙編中ad

2021-04-17 16:26:47 字數 3863 閱讀 6948

1樓:匿名使用者

al: 0040h bl:0026h //關注的是aladd ah,bl //卻把bl加到ah高位,得到的:

ax的值2640h,

al的值40h

ah的值26h

組合語言: mov ax,oo1ah mov bx,0026h add al,bl add ah,bl ------------->到這裡 ah為什麼等於2640h?

2樓:匿名使用者

計算過程如下:

mov ax,001ah ;ax=1ah,ah=0 ,al=1ah

mov bx,0026h ;bx=0026h,bh=0,bl=26h

add al,bl ;al=1ah+26h=40h

add ah,bl ;ah=0+26h=26h;ah=26h,al=40h,ax=2640h看懂了嗎?

3樓:陳坤坤

上面說的很正確 關鍵你要明白 ax bx 都是通用暫存器,其中ax 是16位 分別包含兩個八位ah,al

bx一樣 並且算的結果是用十六進位制算的 逢16進一 懂不

請問組合語言 這道題是什麼思路?al bl ah bh 這是什麼意思? 還有怎麼計算啊?

4樓:匿名使用者

這幾條彙編指令其實並沒有完成任何結構性的功能,最多隻是給學習者演示一下cpu暫存器在彙編指令的執行過程中如何變化,如何運算而已,故談不上什麼思路。

al:ax暫存器(16位暫存器)的低位位元組;

bl:bx暫存器(16位暫存器)的低位位元組;

ah:ax暫存器(16位暫存器)的高位位元組;

bh:bx暫存器(16位暫存器)的高位位元組;

示例中的彙編語句是以8位位元組的形式訪問暫存器的:

add al,bl ;ax低位元組+bx低位元組 結果送al

add ah,bl ;ax高位元組+bx低位元組 結果送ah

add bh,al ;bx高位元組+ax低位元組 結果送bh

mov ah,0 ;將0賦值給ah

add al,85h ;ax低位元組+85h 結果送al

add al,93h ;ax低位元組+93h 結果送al

結果ax=0158h

5樓:匿名使用者

很少有彙編指令沒有完成任何建構函式,同比增長只是為了演示到學習者的cpu暫存器的彙編指令在執行過程中,如何改變,如何計算有什麼想法,到目前為止。

al:ax暫存器的低位元組(16位暫存器);

bl:低位元組的的bx暫存器(16個暫存器);

ah:ax暫存器(16位暫存器)位元組;

的bh:高位元組的的bx暫存器(16個暫存器),例子彙編語句的基礎上的8個位元組的形式訪問暫存器:

新增al bl斧頭低位元組+ bx低位元組的傳送人加啊,bl斧頭高位元組+ bx低位元組送啊

人;新增bh,bx高位元組+ ax的低位元組傳送bhmov ah,0 0分配給啊

新增al,85h;

新增人。斧頭+85 h的低位元組,傳送人,93h;斧頭低字第93?傳送人

結果ax = 0158h

6樓:月晞

al屬於低位累加器,

ah屬於高位累加器,bl屬於低位基址暫存器,bh屬於高位基址暫存器,h表示十六進位制數

mov ax,001ah /將001a存入ax中,此時al為1a,ah為00

mov bx,0026h /將0026存入bx中,此時bl為26,bh為00

add al,bl /求al+bl,結果存入al中,al=40

add,ah,bl /求ah+bl,結果存入ah中,ah=26

add bh,al /求bh+al,結果存入bh中,bh=1a

mov ah,0 /將ah清0

add al,85h /求al+85,結果存入al中,al=c5

add al,93h /求al+93,結果存入al中,al=58

7樓:匿名使用者

沒什麼意義,也許是計算序列號,或者加密的什麼演算法指令吧

組合語言中add加法指令的問題

8樓:閭丘芷荷乙曾

1.0ac72h只是一個表示方法,跟ac72h是一樣的含義。ax裡還是儲存16位的值。

之所以在前面多加一個0,是因為編譯器不識別以字母開頭的立即數。

算是立即數表示的一種規則吧,或者可以理解為是一種語法規則。

只要是十六進位制數的(最後加h),首位又是字母的,必須前面新增個0。

這樣也不容易引起歧義。

如果不習慣加0,那mov

al,dh這個指令怎麼識別呢?

是把8位暫存器dh裡的值交給al?還是把十六進位制數0dh交給al呢。。。

所以建議你養成這樣的習慣。

2.0f表示溢位,實際上是把add指令作為有符號數加法指令。ax開始是正數(最高位0),bx也正數,相加結果超過了能識別的最大正數(7fffh),所以溢位了。

9樓:革盼秋宇恬

89h+

89h=

112h,而al最大是ffh,產生溢位後就生產丟失現象,只保留低位。

要想不丟失,可改為:

xorah,ah

addax,al

則ax是正確的112h

其他高階語言也一樣,在宣告變數和計算時要考慮數字溢位問題(宣告的是short型變數,給的卻是int型值,得到的也只會是short型的值即丟失或報錯)

10樓:做而論道

無論,是有符號還是無符號的,演算法都是相同的。

即:89h + 89h = (1)12h。

相當於無符號:137 + 137 = 274 = 256 + 18。 256 即為進位 1。

相當於有符號:(-119) + (-119) = +18。 溢位,結果無效。

換一個數,再試試,有符號數,也可以得出正確的結果。

11樓:匿名使用者

不是的,雖然算數運算指令主要用來對8位無符號資料進行算術操作,但也同樣用於帶符號數的。

在加法運算中,若位7有進位,則進位位cy置1,否則清0;若位3有進位,則半進位位ac置1,否則清0。若看作2個帶符號數相加,還需判斷溢位位ov;若ov為1,表示和數溢位。

例如:a=aeh,r1=81h,執行指令「add a,r1」,則操作如下所示。

1 0 1 0 1 1 1 0

+ )1 0 0 0 0 0 0 1

——————————

1 0 0 1 0 1 1 1 1

結果:a=2fh,cy=1,ov=1,ac=0,p=1。

此例中,若把aeh、81h看作無符號數相加,則結果為12fh(在看作無符號數時,不考慮ov位);若將上述2值看作有符號數,則有「2個負數相加得到正數」的錯誤結論,此時,ov=1,表示有溢位,指出了這一錯誤。

希望能幫到你。

12樓:匿名使用者

無符號數的範圍是0-255,有符號數是-128 - 127.應該預設是無符號數,另外標誌暫存器裡有個of位它是針對有符號數的,如果是mov al,7fh add al,1 of位會置1 顯示有符號數溢位,因為7fh+1=128大於了有符號數的表示範圍。

13樓:夕見的

將al的內容直接相加(注意的是要進行的是十六進位制的加法,而不是十進位制的)後送到al暫存器中

反彙編問題,反彙編問題

這兩個反匯編出來的語句是一樣的。1.你這是8051系列微控制器的彙編,我想你是知道這一點的。2.你用的工具採用了按字 16個二進位制位也就是兩個位元組 的方式顯示資料,而且是高位元組在前。也就是說你給的兩條指令,如果按51的傳統來看的話應該分別是 21 ff 和 21 00,其中21 是指令 mov...

什麼是組合語言,什麼是彙編和組合語言?

組合語言就是計算機語言,它是有0,1組成的.通俗的說就是我們人和計算機交流的語言.介於機器語言和高階語言之間的一種 什麼是彙編和組合語言?彙編語copy言是一種低階計算bai機程式語言,說 低階du 並不是指語言的功能和複雜程度,而是它zhi出現在計算機發展史dao的早期,但現在仍廣泛應用於計算機開...

應該怎麼學彙編,怎麼學習彙編

不要急於寫彙編程式,先學著用偵錯程式,比如od 32位的 debug 真實模式 的,我描述用od。因為od可以直接在裡面寫上彙編指令,並能單步執行,即能看到效果,現在的組合語言怎麼說呢?對應用程式開發的程式設計師來說,很大程度上是應用於除錯。當然如果你是cracker。或者玩shellcode。那可...