彙編 移位指令 幫幫忙

時間 2025-01-10 00:40:13

1樓:網友

var作為乙個雙位元組的變數,最多隻能裝下16位,也就是四個16進位數,按照你的程式,是將前四位16進位數(共16位)左移2次(mov bx,var 樓主好像在後面多寫了個2),這樣程式就結束了,而實際上,資料段裡還有乙個資料沒去理會,所以樓主應該用另乙個暫存器,再重複一次程式段。

如果你想整體移動的話,則可考慮用兩個暫存器分別裝兩個資料,移位一次後,用帶進位的加法,讓高16位與0相加,然後再進行第二次移位。

至於老師說的用堆疊,估計是因為他想一次性移兩位,為了不丟失第一次的進位,則用堆疊加以儲存。個人認為這樣做更復雜一些。

mov si,0

mov ax,var[si]

mov cx,01h

sal ax,cl

inc si

mov bx,var[si]

mov cx,01h

sal bx,cl

adc ax,0

以上是我隨手想的,沒有上機驗證,只移動了1位,樓主自己修改吧,注意adc必須在兩個暫存器都移位後,且須緊接著bx(低16位)移位後才能用。

2樓:網友

因為你定義的是字型別的資料,dw 0e259h,07455h,它總共是32位的,而你用mov 將其移到 bx暫存器,bx是16位的,所以只將前4個裝進去bx了,後4個根本沒裝進去,所以當然只移了前面的了。

再重複你的語句,再用ax暫存器把後面裝進去,方法一樣。

3樓:彤立以濰

rar,全稱:shift

arithmetic

right。就是算術右移。將目的運算元向右移動指定的位數,目的運算元的低位移入cf,高位用符號(初始的最高位)為填充。

如:10101001rar四位就是11111010,01101010rar四位就是00000110。

ror,全稱:rotate

right。就是迴圈右移。將目的運算元向右移動指定的位數,移出的位順序進入高位,最後移出的為進入cf。

如:11110101ror兩位就是01111101將最低兩位順序移到的最高兩位,其餘各位依次右移。

rcl,全稱:rotate

through

carryleft。就是帶進位迴圈左移。將目的運算元和cf聯合起來向左迴圈移動指定的位數,最後移出的為進入cf。

如:11001010rcl兩位(若cf初始為0)就得00110010,此時cf中為1了,相當於把cf一起加入了移動的佇列。

一·答案是0010000000010111b,且此時cf中的內容為0.

二·答案為0000010111001100b,且此時cf中的內容為0.

4樓:中哲騎芳

一0010000000010111b

也就是8215

二0000010111001100b

也就是1484

rar是向右移,最高位還是跟原來的最高位一樣。

ror是迴圈向右移,最右邊的位補到最左邊的。

rcl是將cf也算進去當成是rol就好了,

位操作指令、轉移指令、字串操作指令的使用

5樓:匿名使用者

6. 從鍵盤枝並輸入乙個字串,把它**化為大寫字後)顯示出來。

只要在實現的時候加上48就行了。

7. 將2000h起始處的字串豎搭好傳送到2100h起始處。

用指標。8.在2000h起始處的字串中查詢字元'a',如果找到將它換成字元'餘鉛a',完成後將字串顯示出來。

同6題差不多。

其他的我不會了。我盡力了。

高分彙編程式設計,高手來幫幫忙

有彙編和c轉化的軟體 for i 0 i 9 i for j i 1 j 10 j if a i a j 這個c是對的不過你還少了點東西.下面的彙編我倒是看的很對但是有點還是沒有看明白.你的意思是每次si和di都因該加2是在儲存資料時佔用的2個位元組. data segment assume ds ...

組合語言題,哪位大俠幫幫忙啊

第一道 註釋stack segment stack 定義堆疊 dw 100 dup 0 stack ends data segment 資料段開始 bin dw 7462 buf db 6 dup 0 0dh,0ah,ten dw 10 data ends code segment assume c...

進來幫幫忙吧,幫幫忙,幫幫忙吧

一直注視著你 出汗本身是一種調節體溫 散熱的一種方式,比如勞動 運動 情緒激動 緊張之後出汗都是很正常的,因此出汗是一種很正常的表現。中醫認為出汗也是有他的道理的,比如 黃帝內經 中就有相關記載。人與人之間是有個體差異的,比如胖一些的人汗液就會多一些,瘦一些的人出汗就會少一些,這都屬於正常範疇。出汗...