組合語言中的問題

2023-01-26 20:55:35 字數 798 閱讀 9226

1樓:匿名使用者

>此處指的是:mov cl,[1234]需要4個機器指令週期

非也.指令長度就是指令長度. 具體說, 就是這句彙編語句翻譯成機器指令後所佔的位元組數. 最直觀的莫過於用debug.exe的a命令輸入幾條彙編語句來看看了.

執行debug, -提示符下打a100回車, 依此輸入 mov bx,1000回車, mov ax,[bx]回車, ...螢幕顯示應該是:

-a100

0c51:0100 mov bx,1000

0c51:0103 mov ax,[bx]

0c51:0105 mov cl,3

0c51:0107 shl ax,cl

0c51:0109 inc ax

0c51:010a

你看, mov bx,1000開始在地址0c51:0100, 而mov ax,[bx]開始在地址0c51:0103, 說明 mov bx,1000佔3個位元組, 即它是3位元組長的; 如此類推,可知mov ax,[bx], mov cl,3和shl ax,cl都是2位元組長的, inc ax是1位元組長的.

>如mov cl,[1234h]指令是4位元組長的,而mov al,[1234h]指令是3位元組長的

是的.同樣可以用debug的a命令驗證.但在debug下,要分別鍵入為mov cl,[1234]和mov al,[1234], 不要加h. 因為debug只用16進位制.

還可以用d100看看它們的機器碼是什麼樣子的.

2樓:

此處指的是:mov cl,[1234]需要4個機器指令週期,

關於組合語言的迴圈問題,關於組合語言中的PUSH問題。

你理解bai從程式上面執行下來到du達 loop s後又去執行標zhi號s處,這沒錯。然dao後就內無限迴圈死,這就錯了容 組合語言的迴圈指令loop是有條件的,這個隱含操作和條件就是每迴圈一次,cx cx 1,如果cx 0,迴圈就結束了。在這個程式中,迴圈3次結束。關於組合語言中的push問題。每...

組合語言中si表示地址還是內容,組合語言中 SI 表示地址還是內容

si 是暫存器間接定址,它是指si中地址的內容,所以是具體內容,si是地址。在x86彙編中,中括號就相當於c語言的星號,即指標,mov x,地址 相當於x p一樣,是取內容。若mov si 100 則si代表 100 si 代表 地址為100的記憶體單元中的內容 記住,有的代表記憶體單元裡面 的內容...

組合語言中db是什麼意思,組合語言中DB是什麼意思?

db作為組合語言中的偽操作命令,它用來定義運算元佔用的位元組數。表示式中可包含符號 字串 或表示式等項,各個項之間用逗號隔開,字串應用引號括起來。括號內的標號是可選項,如果使用了標號。db的作用 在這裡b是byte的縮寫,即位元組,所以,該偽操作所定義的每個運算元佔有1個位元組 8位 如 1mess...