1.ret和retf
ret:指令用棧中的資料,修改ip的內容,從而實現了近轉移
cpu執行ret指令時,進行下面兩步操作:
1)(ip)=((ss)*16+(sp))
2)(sp)=(sp)+2
相當於pop ip
retf:用棧中的資料,修改cs和ip的內容,從而實現遠轉移
1)(ip)=((ss)*16+(sp))
2)(sp)=(sp)+2
3)(cs)=((ss)*16+(sp))
4)(sp)=(sp)+2
相當於pop ip pop cs
call 標號:(相比jmp只是將當前的的位置儲存到棧)
操作如下:
1)(sp)=(sp)-2
((ss)*16+(sp))=(ip)
2)(ip)=(ip)+16位位移
call far ptr 標號:遠轉移
1)(sp)=(sp)-2
((ss)*16+(sp))=(cs)
(sp)=(sp)-2
((ss)*16+(sp))=(ip)
2)(cs)=標號所在的段位址
(ip)=標號所在的偏移位址
call 16位暫存器
(sp)=(sp)-2
((ss)*16+(sp))=(ip)
(ip)=(16位暫存器)
相當於:
push ip
jmp 16位暫存器
call word ptr 記憶體單元位址 近轉移
call dword ptr 記憶體單元位址 遠轉移
mul指令:乘法指令
注意:相乘兩數要麼都是8位,要麼都是16位
8位結果:ax中
16位結果:dx高位和ax地位中
組合語言學習筆記
學習參考資料 大灰狼 講彙編 資料匯流排,位址匯流排,控制匯流排。位址匯流排有多少條就決定了cpu最大的記憶體使用量。80386有32位位址匯流排,所以它的定址能力就是4g.暫存器 通用暫存器,段暫存器,ax暫存器 通用暫存器,存放資料。高位位元組ah,低位位元組al。實體地址表示方法 位址加法器,...
組合語言學習筆記
cs ip是指向程式執行的位置 code segment ds 儲存記憶體中取資料的位址,data segment ss sp是指向堆疊的位置 stack segment cx 裡儲存的是loop執行的標誌 loop執行時,cx cx 1,若此時cx裡值為0,則跳出loop,否則繼續loop 初始 ...
組合語言學習筆記
編譯下面的程式,生成列表檔案,觀察標號在機器碼中變成了什麼?小組中的同學都說一說,說出你看到了什麼,說出你的疑問,讓小夥伴們一起解決。下面是程式 這個程式的功能沒有意義,只用於觀察程式中的標號 assume cs codesg,ds datasg datasg segment a db 1,2,3,...