1樓:兔老大米奇
jmp指令的運算元是地址,實際執行效果是修改ip的值。
由於byte ptr使得bx指向的資料為位元組型別,而ip為字型別,資料型別不匹配,故該指令不正確。
指令的正確寫法可以是jmp word ptr [bx],此時將bx指向的字型別資料賦給ip;或者jmp dword ptr [bx],該指令把bx所指向的雙字型別資料的高位字賦給cs,低位字賦給ip。
擴充套件資料
bx可以作為索引暫存器mdw1,2,3,4,5,6,7,8,9,10,leabx,m;把m的首地址放入bx,即把bx當作索引,c語言中的指標概念即**於此;如果你學過c語言的話movbyteptral,[bx],讀取1個位元組的資料到al中.[bx]是暫存器定址。
即相當於 ; c語言中的 char a = *(char*)p,這類用法。byte ptr即指明操作型別是db型別。同理,[bx+1]即指向了資料中下一個位元組,對m這種dw型別的資料來說。
即相當於指向了[bx]對應的字資料的高位位元組。比如:假如bx指向第1個字1, 1在記憶體中佔2個位元組01 00 (低位在前,高位在後則:
mov al, byte ptr [bx]。
把低位01 送入al,mov ah, byte ptr [bx+1],把高位00狀入ah。
2樓:聯不通聯不通
jmp後面的表示式應該是程式地址,在x86中最小的地址值也是字(word),所以錯。
3樓:匿名使用者
jmp指令的運算元是地址,實際執行效果是修改ip的值,在某種情況下還會修改cs的值。
由於byte ptr使得bx指向的資料為位元組型別,而ip為字型別,資料型別不匹配,故該指令不正確。
指令的正確寫法可以是jmp word ptr [bx],此時將bx指向的字型別資料賦給ip;或者jmp dword ptr [bx],該指令把bx所指向的雙字型別資料的高位字賦給cs,低位字賦給ip。
組合語言中的返回指令rst問題,組合語言中的返回指令Rst問題
先澄清一下你問得模糊的地方。1 你說的 rst 返回指令應該是 ret 吧?2 sp 不叫堆疊指令,它是堆疊指標,估計是stack pointer的首字母。該指標總是指向堆疊的棧頂,即始終存放的是棧頂的地址。堆疊的工作原理可簡述為 後進先出 即lifo,last in first out。具體解釋請...
有關組合語言指令的問題
mov al,ebx 將ebx為地址中的內容放到al中,其中ebx為32位元暫存器,只使用低16位 mov eax,table bx 應該是talbe bx 吧,就是把段地址為table,偏移地址為bx的內容放到eax中,同上,只使用低16位 mov ax,ebx esi 將偏移地址ebx與變址es...
組合語言關於assume的用法,彙編偽指令 assume 具體作用是什麼
assume 段暫存器的說明語句 在組合語言源程式中可以定義多個段,每個段都要與一個段暫存器建立一種對應關係。建立這種對應關係的說明語句格式如下 assume 段暫存器名 段名 段暫存器名 段名,其中 段暫存器是cs ds es ss fs和gs,段名是在段定義語句說明時的段名。在一條assume語...