ret用栈中的数据修改IP来实现近转移.相当于POP IP
retf用栈中的数据修改CS和IP来实现远转移.相当于POP IP,POP CS
call 标号:将当前IP压栈后,转到标号处执行.根据位移进行转移.
call far ptr 标号:相当于PUSH CS,PUSH IP,JMP FAR PTR 标号
call 寄存器
call word ptr 内存单元地址: PUSH IP ,JMP WORD PTR 内存单元地址
call dword ptr 内存单元地址:PUSH CS,PUSH IP,JMP DWORD PTR 内存单元地址
mul乘法指令:mul要...


- [inuyashall] BX可以和ES或SS配套使用么? 09/24 22:42
- [游客] mark 07/23 11:21
- [游客] OK! 07/20 09:24
- [kissbill] 改为inc cx 没有深刻理解loop的执行原理.谢谢 07/19 19:21
- [younggay] 要记住,jmp跳转是基于相对位移的哟。 07/14 15:13
- [younggay] 回答没问题。 07/14 14:58
- [younggay] 回答正确。 07/14 14:57
- [younggay] 回答的不对,你跳转到OK后看看你的bx值对么? 07/14 14:57
- [crazyman] 加油~~ 07/01 09:39
- [crazyman] 程序没问题。程序“丑”不怕,逻辑完善了,程序我们可以慢慢“绣”。 07/01 09:13
[2009-07-22 18:29] 第十章笔记
阅读全文 |
评论次数(1) |
浏览次数(650) |
所属类型(默认类型)
[2009-07-10 11:14] 第九章笔记
可以修改IP,或同时修改CS和IP的指令统称为转移指令.
只修改IP时称为段内转移,同时修改CS和IP时称为段间转移.
段内转移又分为:短转移和近转移.
offset是由编译器处理,功能是取得标号处的偏移地址.
jmp 无条件转移;jmp short 标号:转移范围为-128~127
jmp near ptr s
jmp far ptr s(可以同时修改CS和IP).
jmp 十六位寄存器
jmp word ptr 内存单元地址(段内转移)[内存单元地址开始处存放着的一个字为转移的目的地址]
jmp dword ptr 内存单元地址(段间转移)[高位为转移的段地址,低位为转移...
只修改IP时称为段内转移,同时修改CS和IP时称为段间转移.
段内转移又分为:短转移和近转移.
offset是由编译器处理,功能是取得标号处的偏移地址.
jmp 无条件转移;jmp short 标号:转移范围为-128~127
jmp near ptr s
jmp far ptr s(可以同时修改CS和IP).
jmp 十六位寄存器
jmp word ptr 内存单元地址(段内转移)[内存单元地址开始处存放着的一个字为转移的目的地址]
jmp dword ptr 内存单元地址(段间转移)[高位为转移的段地址,低位为转移...
阅读全文 |
评论次数(1) |
浏览次数(623) |
所属类型(默认类型)
[2009-06-29 16:07] 第八章笔记
数据处理的两个基本问题:1,数据在什么地方.2,数据的长度.
寻址:
1,在8086CPU中,只有BX,SI,DI,BP四个寄存器,可以用在[...]来进行内存单元的寻址.
2,这四个寄存器,可以单独出现,或者是必须成对出现.bx和si,bx和di,bp和si,bp和di.
3,只要在[...]中使用了bp,而又没有显性的给出段地址,则段地址默认在ss中.
汇编语言中数据的位置:1,立即数;idata,直接包含于汇编指令,执行前在CPU的指令缓冲器中.2,寄存器.3,内存中,用SA(段地址)和EA(偏移地址)结合的办法来寻址.
数据长度如何指明:1,寄存器指明.2,通过X ptr指...
寻址:
1,在8086CPU中,只有BX,SI,DI,BP四个寄存器,可以用在[...]来进行内存单元的寻址.
2,这四个寄存器,可以单独出现,或者是必须成对出现.bx和si,bx和di,bp和si,bp和di.
3,只要在[...]中使用了bp,而又没有显性的给出段地址,则段地址默认在ss中.
汇编语言中数据的位置:1,立即数;idata,直接包含于汇编指令,执行前在CPU的指令缓冲器中.2,寄存器.3,内存中,用SA(段地址)和EA(偏移地址)结合的办法来寻址.
数据长度如何指明:1,寄存器指明.2,通过X ptr指...
阅读全文 |
评论次数(2) |
浏览次数(708) |
所属类型(默认类型)
[2009-06-26 20:55] 第七章笔记
and指令:把操作对象相应位置置0
or指令:把操作对象相应位置置1
用'...'来指明数据是以字符形式给出,编译器自动转化为ASCII码.
SI和DI是8086CPU中和BX功能相近的寄存器,但是不能分为8位....
or指令:把操作对象相应位置置1
用'...'来指明数据是以字符形式给出,编译器自动转化为ASCII码.
SI和DI是8086CPU中和BX功能相近的寄存器,但是不能分为8位....
阅读全文 |
评论次数(0) |
浏览次数(824) |
所属类型(默认类型)
[2009-06-19 14:24] 第五章笔记
LOOP指令执行时进行的两步操作:1,(CX)=(CX)-1 2,判断CX的值,不为零则转到标号处执行,CX值为零则向下执行.
汇编程序中数据不能以数字母开头.例:A00H,应该写为0A00H.
DEBUG中G命令,表示执行到当头代码处. 例g 1200.
用P命令执行INT 21.
DEBUG和汇编程序中对mov ax,[0]的理解是有差异的.DEBUG中认识0是一个偏移地址,而汇编程序中认识0是一个字,即;mov ax,0.如果要让汇编程序认为0是一个偏移有两种办法:
1 mov ax,2000h
mov ds,ax 设定段地址
mov bx,...
汇编程序中数据不能以数字母开头.例:A00H,应该写为0A00H.
DEBUG中G命令,表示执行到当头代码处. 例g 1200.
用P命令执行INT 21.
DEBUG和汇编程序中对mov ax,[0]的理解是有差异的.DEBUG中认识0是一个偏移地址,而汇编程序中认识0是一个字,即;mov ax,0.如果要让汇编程序认为0是一个偏移有两种办法:
1 mov ax,2000h
mov ds,ax 设定段地址
mov bx,...
阅读全文 |
评论次数(1) |
浏览次数(353) |
所属类型(默认类型)
[2009-06-10 17:03] 第三章笔记
8086CPU用16位寄存器来储存一个字,分为高8位和低8位.
字单元,由两个连续的内存单元组成.
DS寄存器储存要访问的段地址.CPU会从DS中提取要访问的段地址.
8086CPU不支持数据直接入段地址,mov ds,1000H是错误的.mov ds,ax是正确的.这是因为CPU硬件设计的原因.
[...]表示一个内存单元,内部的数字代表偏移地址.
mov sub add都有两个操作对象.
mov ax,ds也是成立的.
栈是一种有特殊访问方式的存储空间.先进后出,后进先出.
栈顶由高地址由低地址方向增长.
SS:SP指向栈顶.
栈有两个种操作...
字单元,由两个连续的内存单元组成.
DS寄存器储存要访问的段地址.CPU会从DS中提取要访问的段地址.
8086CPU不支持数据直接入段地址,mov ds,1000H是错误的.mov ds,ax是正确的.这是因为CPU硬件设计的原因.
[...]表示一个内存单元,内部的数字代表偏移地址.
mov sub add都有两个操作对象.
mov ax,ds也是成立的.
栈是一种有特殊访问方式的存储空间.先进后出,后进先出.
栈顶由高地址由低地址方向增长.
SS:SP指向栈顶.
栈有两个种操作...
阅读全文 |
评论次数(1) |
浏览次数(300) |
所属类型(默认类型)
[2009-06-07 13:04] 第二章笔记
8086都是16位寄存器,而且AX,BX,CX,DX都能分成高8位和低8位.
十六进制数后加H,二进制后加B.
8086是20的地址总线.但是8086是16位结构,一次只能处理16位的数据,故表现的寻址能力是2^16B.
8086内部采用了用两个16位地址合成一个20地址的方法.
"段地址*16+偏移地址 = 物理地址",它的含义是:CPU访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址.
一个N进制数乘以N,就代表左移一位.左移X位,则乘以N^X.
CS 和 IP是8086中最着急的两个寄存器.
C...
十六进制数后加H,二进制后加B.
8086是20的地址总线.但是8086是16位结构,一次只能处理16位的数据,故表现的寻址能力是2^16B.
8086内部采用了用两个16位地址合成一个20地址的方法.
"段地址*16+偏移地址 = 物理地址",它的含义是:CPU访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址.
一个N进制数乘以N,就代表左移一位.左移X位,则乘以N^X.
CS 和 IP是8086中最着急的两个寄存器.
C...
阅读全文 |
评论次数(1) |
浏览次数(175) |
所属类型(默认类型)
[2009-06-07 11:13] 汇编语言第一章笔记
每一种处理器都有自己的指令集,即机器语言.
机器语言难于辨别及记忆,于是产生了汇编语言.
将汇编指令转换为机器指令的翻译程序,叫编译器.
汇编语言由三类指令组成:
1,汇编指令:机器码的助记符,有对应机器指令.
2,伪指令:编译器执行,计算机不执行,没有对应机器指令.
3,其他符号:+ - * /,由编译器识别,没有对应机器指令.
8 bit = 1 byte
1 KB = 1024 B
1 MB = 1024 KB
.
.
一个存储单元是8 BIT 即 一字节.
如果CPU地址总线宽度为N,那么寻址空间为2的N次方个内存单元.
数据总线的宽度,决定了C...
机器语言难于辨别及记忆,于是产生了汇编语言.
将汇编指令转换为机器指令的翻译程序,叫编译器.
汇编语言由三类指令组成:
1,汇编指令:机器码的助记符,有对应机器指令.
2,伪指令:编译器执行,计算机不执行,没有对应机器指令.
3,其他符号:+ - * /,由编译器识别,没有对应机器指令.
8 bit = 1 byte
1 KB = 1024 B
1 MB = 1024 KB
.
.
一个存储单元是8 BIT 即 一字节.
如果CPU地址总线宽度为N,那么寻址空间为2的N次方个内存单元.
数据总线的宽度,决定了C...
阅读全文 |
评论次数(1) |
浏览次数(162) |
所属类型(默认类型)
页码数(1):
1