王爽汇编9-10

转移指令:
可以修改IP,或同时修改CS和IP的指令统称为转移指令。
8086CPU的转移行为有以下几类:
1. 只修改IP时,称为段内转移,比如: jmp ax。
2. 同时修改CS和IP时,称为段间转移,比如:jmp 1000:0.
由于转移指令对IP的修改范围不同,段内转移又分为:短转移和近转移。
短转移IP的修改范围为-128~127。
近转移IP的修改范围为-32768~32767。

操作符offset在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址。
assume cs: codesg
codesg segment
start: mov ax, offset start ; 相当于mov ax, 0
s: mov ax, offset s; 相当于mov ax, 3,因为上一条指令长度是3个字节
codesg ends
end start

短转移:
jmp short 标号
对应的机器码是EB 一个字节的IP偏移量
近转移:
jmp near ptr 标号
对应的机器码是E9 两个字节的IP偏移量
远转移,又称段间转移:
jmp far ptr 标号

jmp 寄存器

jmp word ptr 内存单元地址(段内转移)
jmp dword ptr 内存单元地址(段间转移)

jcxz 类似于:
if((cx)==0) jmp short 标号。

loop 类似于:
(cx)--;
if ((cx)!=0) jmp short 标号

jcxz和loop中都是短转移。

内存地址空间中,B8000H~BFFFFH共32KB的空间,为80X25彩色字符模式的显示缓冲区。
一个字符在显示缓冲区占两个字节(低字节代表ASCII,高字节代表显示属性)。一页大概占4KB,显示缓冲区可以存放8页,默认显示第0页。

 

call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP。它们经常被共同用来实现子程序的设计。

ret指令相当于pop IP
retf指令相当于pop IP, pop CS

CPU执行call指令时,进行两步操作:
1. 将当前的IP或CS和IP压入栈中。
2. 转移。
call指令不能实现短转移(不能使用一个字节来标识IP偏移量)。

call 标号 含义是:
push IP
jmp near ptr 标号

call far ptr 标号 含义是:
push CS
PUSH IP
jmp far ptr 标号

“call far ptr 标号”对应的机器码中包含CS和IP的地址,可以推断出,在可执行文件的描述信息中包含CS的信息。
汇编语言中经常用的end start,可以推断出,在可执行文件的描述信息中包含IP的信息。

call reg 含义是:
push IP
jmp reg

call word ptr 内存单元地址 含义是:
push IP
jmp word ptr 内存单元地址

call dword ptr 内存单元地址 含义是:
push CS
push IP
jmp dword ptr 内存单元地址

call命令的总结:
call命令从偏移量中计算出新IP:call 标号
call命令从寄存器中计算出新IP: call reg
call命令从内存中计算出新IP: call 内存地址

我们可以写一个具有一定功能的程序段,我们称其为子程序,在需要的时候,用call指令转去执行。可是执行完子程序后,如何让CPU接着call指令向下执行?call指令转去执行子程序之前,call指令后面的指令的地址将存储在栈中,所以可在子程序的后面使用ret指令,用栈中的数据设置IP的值,从而转到call指令后面的代码处继续执行。

mul指令:
1. 两个相乘的数,要么都是8位,要么都是16位。如果是8位,一个默认放在AL中,另一个放在8位reg或内存字节单元中;如果是16位,一个默认在AX中,另一个放在16位reg或内存字单元中。
2. 结果:如果是8位乘法,结果默认放在AX中;如果是16位乘法,结果高位默认在DX中存放,低位在AX中存放。
格式如下:
mul reg
mul 内存单元

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值