微机原理==第二章16位和32位微处理器(6)

字节串检索
SCASB   ;(AL)-(ES:[DI])
        ;DI←(DI)±1

字串检索
SCASW   ;(AX)-(ES:[DI])
        ;DI←(DI)±2

影响标志位

字节串读取
LODSBAL←(DS:[SI])
        ;SI←(SI)±1
字串读取
LODSWAX←(DS:[SI])
        ;SI←(SI)±2

不影响标志位

字节串存储
STOSBES:[DI]←(AL)
         ;DI←(DI)±1

字串存储
STOSWES:[DI]←(AX)
         ;DI←(DI)±2

不影响标志位

重复前缀指令(repeat)

串操作指令前,可以加一个重复前缀,实现串操作的重复执行。重复次数隐含在CX寄存器中。
重复前缀分2类,3条指令:
REP前缀配合不影响标志的MOVS、STOS指令使用
REPZ/REPE、REPNZ/REPNE前缀配合影响标志的CMPS、SCAS指令使用

REP重复前缀指令

REP ;每执行一次串指令,CX减1
;直到CX=0,重复执行结束

REPZ/REPE重复前缀指令

REPZ ;每执行一次串指令,CX减1
;并判断ZF是否为0,
;只要CX=0或ZF=0,重复执行结束

REPNZ/REPNE重复前缀指令

REPNZ ;每执行一次串指令,CX减1
;并判断ZF是否为1,
;只要CX=0或ZF=1,结束重复执行

5)调用/转移/循环控制/中断指令

(1)指令寻址方式及无条件转移指令JMP

指令寻址方式:顺序寻址方式、跳跃寻址方式
通过改变IP(和CS)值,实现程序执行顺序的改变。

跳跃寻址方式:
段内直接寻址方式
段内间接寻址方式

不更改CS,只改变IP

段间直接寻址方式
段间间接寻址方式

更改CS,改变IP

段内直接寻址方式(相对寻址)
IP← (IP)+ 8/16位位移量

16位位移量:近转移(near)(-32768~+32767)
8位位移量:短转移(short) (-128~+127)

段内间接寻址方式
IP←(reg16/mem16)


段间直接寻址方式
远转移(far)——目标地址必须是32位,称为远指针即逻辑地址。
IP←目标的偏移地址
CS←目标的段地址

段间间接寻址方式
IP←(mem)
CS←(mem+2)

(2)子程序调用和返回指令

子程序是完成特定功能的一段程序;
当主程序(调用程序)需要执行这个功能时,采用CALL转移到该子程序的起始处执行;
当运行完子程序功能后,采用RET返回指令回到主程序继续执行。

调用指令

CALL指令分成4种类型(类似JMP)
CALL label
;段内调用、直接寻址
CALL reg16/mem16
;段内调用、间接寻址
CALL far ptr label
;段间调用、直接寻址
CALL dword ptr mem
;段间调用、间接寻址

调用指令

CALL指令需要保存返回地址
段内调用——偏移地址IP压栈
SP←(SP)-2,(SP)←(IP)
段间调用——偏移地址IP和段地址CS压栈
SP←(SP)-2,(SP)←(CS)
SP←(SP)-2,(SP)←(IP)

返回指令

根据段内和段间、有无参数,分成4种类型
RET ;无参数段内返回
RET imm16 ;有参数段内返回
RET ;无参数段间返回
RET imm16 ;有参数段间返回

需要弹出CALL指令压入堆栈的返回地址
段内返回——偏移地址IP弹栈
IP←((SP)),SP←(SP)+2
段间返回——偏移地址IP和段地址CS弹栈
IP←((SP)),SP←(SP)+2
CS←((SP)),SP←(SP)+2

RET  imm16  ;有参数返回

RET指令可以带有一个偶数imm16,
则堆栈指针SP将增加,即
SP←(SP)+imm16
有参数返回使得程序方便地废除执行CALL指令以前入栈的参数。

(3)条件转移指令

条件cc如果成立,程序转移到由标号label指定的目标地址去执行指令;条件不成立,则程序将顺序执行下一条指令。
Jcc指令不影响标志。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值