版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、18086指令系统指令系统(2)2三、逻辑运算和移位类逻辑运算逻辑运算移位操作移位操作非循环移位非循环移位循环移位循环移位3逻辑运算和移位指令4指令类型n逻辑运算逻辑运算n与,或,非,异或与,或,非,异或n移位操作移位操作n非循环移位,循环移位非循环移位,循环移位5 1、逻辑运算指令n逻辑运算指令对操作数的要求大多与逻辑运算指令对操作数的要求大多与ADD指令相同指令相同。“非非”运算指令要求操作数不能是立即数;运算指令要求操作数不能是立即数;(“非非”指令同指令同INC,其他指令搭配规则同其他指令搭配规则同ADD)n除除“非非”运算指令外,其余指令的执行都会使标志运算指令外,其余指令的执行都会
2、使标志位位OF=CF=0,AF不定,不定,SF、 PF、 ZF有影响。有影响。6(1)“与”指令:n格式:格式: n AND OPRD1,OPRD2n操作:操作: n两操作数相两操作数相“与与”,结果送目标地址。,结果送目标地址。7“与”指令的应用n实现两操作数按位相与的运算实现两操作数按位相与的运算nAND BL,SIn使目标操作数的某些位不变,某些位清零。原使目标操作数的某些位不变,某些位清零。原则是则是清零位与清零位与0相与,不变位与相与,不变位与1相与相与。nAND AL,0FHn自身相与:自身相与:使使CF=OF=0,内容不变。内容不变。nAND AX,AX8“与”指令应用例n从地址
3、为从地址为3F8H的端口中读入一个字节数,的端口中读入一个字节数,如果该数的如果该数的bit1位为位为1,则可将,则可将DATA为首为首地址的一个字从地址的一个字从38FH端口输出;否则不能端口输出;否则不能进行数据传送。进行数据传送。 编写相应的程序段。编写相应的程序段。9“与”指令应用例开开 始始取待输出数的取待输出数的偏移地址偏移地址读入状态字读入状态字测试测试bit1位状态位状态Bit1=1?取输入口地址取输入口地址取输出口地址取输出口地址 输出一个字输出一个字NY10“与”指令应用例 LEA SI,DATA MOV DX,3F8HWATT:IN AL,DX AND AL,02H JZ
4、 WATT ;ZF=1转移转移 MOV DX,38FH ;输出;输出1个字个字 MOV AX,SI OUT DX,AX11(2)“或”运算指令n格式:格式: nOR OPRD1,OPRD2n操作:操作: n两操作数相两操作数相“或或”,结果送目标地址,结果送目标地址12“或”指令的应用n实现两操作数相实现两操作数相“或或”的运算的运算nOR AX,DIn使某些位不变,另一些位置使某些位不变,另一些位置“1”。原则是原则是不不变位与变位与0相或,置相或,置1位与位与1相或。相或。 nOR CL,0FHn自身相或:自身相或:使使OF=CF=0,结果内容不变。,结果内容不变。nOR AX,AX13“
5、或”指令的应用例对对ASCII码进行偶校验:码进行偶校验: OR AL,AL;影响标志;影响标志 JPE GOON ; OR AL,80H GOON:.PF=1转移转移14“或”指令的应用将一个二进将一个二进制数制数9变为字变为字符符9如何实现如何实现?159变为字符变为字符9MOV AL , 9OR AL ,30H16(3)“非”运算指令n格式:格式:nNOT OPRDNOT OPRDn操作:操作:n操作数按位取反再送回原操作数操作数按位取反再送回原操作数n注:注:n指令中的操作数不能是立即数,只能是指令中的操作数不能是立即数,只能是MEM/REGMEM/REGn指令的执行对标志位无影响指令
6、的执行对标志位无影响n例:例:NOT BYTE PTRBXNOT BYTE PTRBX17(4)“异或”运算指令n格式:格式: nXOR OPRD1,OPRD2n操作:操作:n两操作数相两操作数相“异或异或”,结果送目标地址,结果送目标地址n例:例: XOR BL,80H XOR AX,AX两操作数自身相异或,结果为两操作数自身相异或,结果为0,CF=OF=0,达到清零目的。,达到清零目的。18(5)“测试”指令n格式:格式: nTEST OPRD1,OPRD2n操作:操作: n执行执行“与与”运算,但运算的结果不送回目运算,但运算的结果不送回目标操作数。标操作数。影响标志影响标志。n应用:应
7、用:n常用于测试某些位的状态。常用于测试某些位的状态。19例:n从地址为从地址为3F8H的端口中读入一个字节数,当的端口中读入一个字节数,当该数的该数的bit1, bit3, bit5位位同时为同时为1时时,可从,可从38FH端口将端口将DATA为首地址的一个字输出,为首地址的一个字输出, 否则就不能进行数据传送。否则就不能进行数据传送。 编写相应的程序段。编写相应的程序段。20源程序代码: LEA SI,DATA MOV DX,3F8HWATT:IN AL,DX MOV DX,38FH;输出;输出1个字个字 MOV AX,SI OUT DX,AXAND AL,2AH;测试是否同时为;测试是否
8、同时为1CMP AL,2AHJNZ WATT21问题(6)按下列要求写出相应的指令和程序段。按下列要求写出相应的指令和程序段。(1)写出两条使)写出两条使BX内容清零的指令。内容清零的指令。(2)使)使CX的的b11, b7, b3 位清零。位清零。(3)测试)测试DX的的b0 、 b8 位是否同是位是否同是1.(4 )以下可使寄存器)以下可使寄存器AX和和CF同时清零的指令同时清零的指令是是 A. SUB AX, AX B. XCHG AX, AX C. PUSH AX D. XOR AX, AX22例例328 统计负数的个数统计负数的个数 n从从4000 H开始的单元中存放有开始的单元中存
9、放有32个有符号数,个有符号数,统计负数的个数,存人统计负数的个数,存人 BUFFER单元中。单元中。XOR DX , DX; DX=0,CF=OF=0 MOV SI , 4000H MOV CX ,20H; 32个数字个数字23例例328 统计负数的个数统计负数的个数 AGAIN : MOV AL ,SI INC SI TEST AL ,80H;测试;测试D7位位 JZ NEXT;为正数转;为正数转 INC DX ;为负数,为负数, DX 加加1NEXT : DEC CX JNZ AGAIN ;CX不等于不等于0转转 MOV BUFFER , DX24源、目的操作数的搭配规则:源、目的操作数
10、的搭配规则:指令指令OR、 AND、 XOR、 TEST注意事项:与注意事项:与MOV 基本相同。基本相同。IMMMEMREG252、移位指令 非循环移位指令非循环移位指令 循环移位指令循环移位指令注:注:n 移动一位时由指令直接给出;移动一位时由指令直接给出;n 移动两位及以上,则移位次数由移动两位及以上,则移位次数由CL指定。指定。nOPRD=MEM/REG261) 非循环移位指令n逻辑左移逻辑左移n算术左移算术左移n逻辑右移逻辑右移n算术右移算术右移27(1)算术左移和逻辑左移n算术左移指令算术左移指令SAL: SAL OPRD,1 SAL OPRD,CLn逻辑左移指令逻辑左移指令SHL
11、: SHL OPRD,1 SHL OPRD,CL有符号数有符号数无符号数无符号数移动一位后,若移动一位后,若CF与最高不相等,则与最高不相等,则OF=1;否则否则OF=028(2) 逻辑右移指令SHRn格式:格式: SHR OPRD,I SHR OPRD,CL0CF无符号数无符号数的右移的右移移动一位后,若次高位与最高位不相等,则移动一位后,若次高位与最高位不相等,则OF=1;否则否则OF=029逻辑右移例:nMOV AL,68HnMOV CL,2nSHR AL,CL0CF0 1 1 0 1 0 AL0 0 0 0 0 1 1 0 1 0 0ALCF0 00 0 0 1 1 0 1 0 ALC
12、F0 0移动移动1次次移动移动2次次30(3) 算术右移指令SARn格式:格式: SAR OPRD,I SAR OPRD,CL有符号数有符号数的右移的右移CF31算术右移算术右移 符号位保持不变符号位保持不变 32非循环移位指令的应用n左移可实现乘法运算左移可实现乘法运算n右移可实现除法运算右移可实现除法运算 33例例3-30 16位无符号数位无符号数乘以乘以10LEA SI ,DATA;16位无符号数送位无符号数送AX MOV AX ,SI SHL AX ,1 ;左移左移1位位 MOV BX ,AX MOV CL ,2 SHL AX ,CL;又左移;又左移2位位 ADD AX ,BXHLT3
13、42、 循环移位指令n不带进位位的循环移位不带进位位的循环移位n带进位位的循环移位带进位位的循环移位左移左移 ROL右移右移 ROR左移左移 RCL右移右移 RCR指令格式、对操作数的要求与非循环移位指令相同指令格式、对操作数的要求与非循环移位指令相同35不带进位位的循环移位CFCF36带进位位的循环移位CFCF37循环移位指令的应用n用于对某些位状态的用于对某些位状态的测试测试;n高位部分和低位部分的高位部分和低位部分的交换交换;n与非循环移位指令一起组成与非循环移位指令一起组成32位或更长字位或更长字长数的移位。长数的移位。38例3-34n测试测试BL中中第第4位的状态位的状态,并保持原内
14、容不变。,并保持原内容不变。 MOV CL ,4 ROL BL ,CL;第第4位送位送CF JNC ZERO ;CF=0转转 ROR BL ,CL;恢复原恢复原BL - ZERO : ROR BL ,CL;恢复原;恢复原BL39例3-35nDX和和AX两个寄存器组合成一个两个寄存器组合成一个32位数位数,一起,一起逻辑左移一位,即逻辑左移一位,即AX的最高位移入的最高位移入DX的最低的最低位。位。 SHL AX ,1 RCL DX , 140程序例 MOV SI,1000H MOV DI,3000H MOV CX,4BBB:MOV AL,SI MOV BL,AL AND AL,0FH OR A
15、L,30H MOV DI,AL INC DI MOV AL,BLPUSH CXMOV CL,4程序程序功能?功能?41程序功能n将将10001000H H开始存放的开始存放的四个压缩四个压缩BCDBCD码转换码转换为为ASCIIASCII码存放在码存放在30003000H H开始的单元中开始的单元中去。去。12H34H56H78H1000H3000H42例:n计算计算2658+3619=2658+3619=? 结果存放在结果存放在SUMSUM单元单元n说明:说明:n被加数和加数的每被加数和加数的每一位都以一位都以ASCIIASCII码形码形式存放在内存中,式存放在内存中,低位在前,高位在低位在
16、前,高位在后。后。36H32H39H31HSTRING1STRING238H35H36H33H数数据据段段SUM.43代码 LEA SI,STRING1 LEA DI,STRING2 LEA BX,SUM MOV CX,4 CLC;CF=0NEXT:MOV AL,SI ADC AL,DI AAA;调整成十进制数调整成十进制数 MOV BX,ALINC SIINC DIINC BXDEC CXJNZ NEXTHLT44问题(7)1. 试判断下列程序执行后试判断下列程序执行后AX中的内容是什么。中的内容是什么。 MOV CL ,2 MOV AX ,0B7H ROL AX ,1 ROR AX ,CL
17、2. 将将AX的中间的中间8位清零,其他位保持不变。位清零,其他位保持不变。 45四、串操作指令46串操作指令说明n针对数据块或字符串的操作;针对数据块或字符串的操作;n可实现可实现存储器到存储器存储器到存储器的数据传送;的数据传送;n待操作的数据串称为待操作的数据串称为源串源串,目标地址称为,目标地址称为目标串目标串。47串操作指令的特点n源串源串一般存放在一般存放在数据段数据段,偏移地址由,偏移地址由SI指定。允许段指定。允许段重设;重设;n目标目标串必须在串必须在附加附加段,偏移地址由段,偏移地址由DI指定;指定;n指令指令自动修改地址指针自动修改地址指针,修改方向由,修改方向由DF决定
18、。决定。 DF=0 DF=1 n数据块长度值由数据块长度值由CX指定指定n可增加自动重复前缀以实现自动修改可增加自动重复前缀以实现自动修改CX内容。内容。增地址方向;增地址方向;减地址方向;减地址方向;48重复前缀n无条件重复无条件重复nREPn条件重复条件重复nREPE 相等重复相等重复nREPZ 为零重复为零重复nREPNE 不相等重复不相等重复nREPNZ 不为零重复不为零重复CX0 且且 ZF=1CX0 且且 ZF=0CX0 重复重复49REPZ/REPE CX ZF =0 =0 =0 =1 退出退出 0 =0 0 =1 执行串操作执行串操作50REPNZ/REPNE CX ZF =0
19、 =0 =0 =1 退出退出 0 =0 执行串操作执行串操作 0 =151串操作指令n串传送串传送 MOVSn串比较串比较 CMPSn串扫描串扫描 SCASn串装入串装入 LODSn串存储串存储 STOS52(1) 串传送指令n格式:格式: MOVS OPRD1,OPRD2 MOVSB ;字节传送。地址隐含字节传送。地址隐含 MOVSW ;字传送。地址隐含;字传送。地址隐含 n串传送指令常与无条件重复前缀串传送指令常与无条件重复前缀REP连用连用53串传送指令流程取源串地址取源串地址取目标串地址取目标串地址设串长度设串长度传送一个字节或字传送一个字节或字修改地址指针修改地址指针修改串长度值修改
20、串长度值传送完否?传送完否?NY设操作方向设操作方向54串传送指令串传送指令 nOPRD1为目标串地址为目标串地址 DInOPRD2为源串地址为源串地址 SI ,可用,可用段重设段重设 55串传送指令例n用串传送指令实现用串传送指令实现200个字节数据的传送:个字节数据的传送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD ;DF=0 REP MOVSB HLT56例例336 n2000H :1200H 开始的开始的100个节传送到个节传送到 6000H :0000H程序段程序段 MOV AX ,2000H MOV DS ,AXMOV AX, 6000H57例例
21、336 MOV ES , AXMOV SI ,1200HMOV DI ,0MOV CX ,100CLD ;DF=0REP MOVSBHLT58(2) 串比较指令n格式:格式: CMPS OPRD1,OPRD2;OPRD1-OPRD2 CMPSB ; 字节比较字节比较 CMPSW ; 字比较字比较n串比较指令常与条件重复前缀连用,指令的执串比较指令常与条件重复前缀连用,指令的执 行不改变操作数,仅影响标志位。行不改变操作数,仅影响标志位。n前缀的操作对标志位不影响。前缀的操作对标志位不影响。59串比较指令例 例3-37(P130)测试两个测试两个200个字节数据是相同:个字节数据是相同:LEA
22、SI,M1LEA DI,M2MOV CX,200CLD REPE CMPSB JZ STOP DEC SI MOV AL,SI MOV BX,SISTOP:HLT 60REPZ/REPE CX ZF =0 =0 =0 =1 退出退出 0 =0 0 =1 执行串操作执行串操作61(3) 串扫描指令n格式:格式: SCAS OPRD SCASB SCASWn执行与执行与CMPS指令相似的操作,只是这里的源指令相似的操作,只是这里的源 操作数是操作数是AX或或AL。AX-OPRD,AL-OPRD.目目 标标操作数操作数62串扫描指令的应用n常用于在指定存储区域中寻找常用于在指定存储区域中寻找某个关键
23、字某个关键字。63例例338 找找 A(1)MOV DI , 2000HMOV BX , DIMOV CX , 0AHMOV AL , A64例例338 找找 A(2)CLD ;DF=0REPNZ SCASBJZ FOUNDMOV DI ,0 ;没找到,使没找到,使 DI=0JMP DONE65REPNZ/REPNE CX ZF =0 =0 =0 =1 退出退出 0 =0 执行串操作执行串操作 0 =166例例338 找找 A(3)FOUND : DEC DI MOV DATA2, DI ;关键字地址存入关键字地址存入 INC DI SUB DI , BXDONE : MOV DATA1 ,D
24、I ;搜索次数存入搜索次数存入67(4) 串装入指令n格式:格式: LODS OPRD LODSB LODSWn操作:操作:n对字节:对字节: ALALn对对 字:字: AXAX源操作数源操作数DS:SIDS:SIDS:SIDS:SI68 串装入指令n用于将内存某个区域的数据串依次装入累加用于将内存某个区域的数据串依次装入累加器,以便显示或输出到接口。器,以便显示或输出到接口。nLODS指令指令一般不加重复前缀一般不加重复前缀。695. 串存储指令n格式:格式: STOS OPRD STOSB STOSWn操作:操作:n对字节:对字节: ALALn对对 字:字: AXAX目目 标标操作数操作数
25、ES:DIES:DI70串存储指令例 内存某个区域清零n设计思想:设计思想: 区域首地址送区域首地址送ES:DI串长度送串长度送CX置方向标志置方向标志DF0送累加器送累加器AL执行串送存指令执行串送存指令p13271例例340 6000H:1200H的的100个字清零个字清零 MOV AX ,6000H MOV ES , AX MOV DI ,1200H MOV CX ,100CLD ;DF=0MOV AX ,0REP STOSWHLT72问题(8)有一段程序如下:有一段程序如下: MOV CX , 10 LEA SI , FIRST LEA DI , SECOND REP MOVSB (1
26、)这段程序完成什么功能?)这段程序完成什么功能?(2)REP 和和 MOVSB 哪条先执行?哪条先执行?73五、程序控制指令n转移指令转移指令n循环控制循环控制n过程调用过程调用n中断控制中断控制741、转移指令无条件无条件转移指令转移指令 无条件转移到目标地址,执行新的指令无条件转移到目标地址,执行新的指令有条件转移指令有条件转移指令 在具备一定条件的情况下转移到目标地址在具备一定条件的情况下转移到目标地址通过修改指令的通过修改指令的偏移地址偏移地址或或段地址及偏移地址段地址及偏移地址实现程序的转移实现程序的转移75(1) 无条件转移指令n格式:格式: JMP OPRD目标地址目标地址与与J
27、MP在同在同一代码段一代码段与与JMP不在同不在同一代码段一代码段原则上可实现在整个内存空间的转移原则上可实现在整个内存空间的转移76无条件段内转移n转移的转移的目标地址目标地址在当前代码段内,段地址不改变。在当前代码段内,段地址不改变。n即:即:目标地址目标地址是是16位偏移地址。位偏移地址。指令中直接给出指令中直接给出目标地址目标地址由指令中的寄存器或由指令中的寄存器或存储器操作数指出目存储器操作数指出目标地址标地址段内直接转移段内直接转移段内间接段内间接转移转移77段内直接转移n段内直接转移段内直接转移n转移的目标地址由指令直接给出转移的目标地址由指令直接给出n格式:格式:nJMP La
28、bel ;NEAR标号标号近地址标号近地址标号78段内直接转移示图JMPLabel代代码码段段位移量位移量下一条要执行指令的偏移地址下一条要执行指令的偏移地址=当前当前IP+位移量位移量79位移量n位移量为位移量为8位位: -128-+127LABEL前加前加SHORT:段内短转移段内短转移 JMP SHORT LABELn位移量位位移量位16位位:NEAR属性,属性,可不加可不加。n JMP LABEL80段内间接转移n段内间接转移段内间接转移n转移的目标地址存放在某个转移的目标地址存放在某个16位寄存器或存储器位寄存器或存储器 的某两个单元中的某两个单元中n例:例:nJMP BXn若:若:
29、BX=1200Hn则:转移的目标地址则:转移的目标地址=1200HJMP代代码码段段1200HMOV81段内间接转移例nJMP WORD PTRBX 设:设:BX=1200HJMP代代码码段段数数据据段段BX=1200XXHXXHIP指令码指令码82无条件段间转移n转移的转移的目标地址目标地址不在当前代码段内。不在当前代码段内。n目标地址目标地址为为32位,包括段地址和偏移地址。位,包括段地址和偏移地址。指令中直接给出指令中直接给出目标地址目标地址由指令中的由指令中的32位存储器位存储器操作数指出目标地址操作数指出目标地址段间直接转移段间直接转移段间间接转移段间间接转移83段间直接转移n段间直
30、接转移段间直接转移n转移的目标地址由指令直接给出转移的目标地址由指令直接给出n格式:格式:nJMP FAR Label远地址标号远地址标号84段间直接转移示图JMPLabel代代码码段段1Label与与JMP之间的关系之间的关系代代码码段段2XXHXXHXXHXXHIPCS85段间间接转移n段间间接寻址段间间接寻址n转移的目标地址由指令中的转移的目标地址由指令中的32位操作数给出位操作数给出n 例:例:nJMP DWORD PTRBXXXHXXHXXHXXHBXIPCSJMP指令码指令码代代码码段段1代代码码段段2数数据据段段86(2) 条件转移指令n在满足一定条件下,程序转移到目标地在满足一
31、定条件下,程序转移到目标地址继续执行,不满足条件,顺序执行下址继续执行,不满足条件,顺序执行下一条指令一条指令 。 条件是前一条指令执行后标条件是前一条指令执行后标志位的状态志位的状态 n条件转移指令均为段内短转移,即转移条件转移指令均为段内短转移,即转移 范围为:范围为: -128-+127p13687条件转移指令条件转移指令 p136 表表3488单个标志位的条件转移指令nJC/JB/JNAE CF=1 转移转移nJNC/JNB/JAE CF=0 转移转移nJP/JPE PF=1 转移转移nJNP/JPO PF=0 转移转移nJZ/JE ZF=1 转移转移nJNZ/JNE ZF=0 转移转
32、移nJS SF=1 转移转移nJNS SF=0 转移转移nJO OF=1 转移转移nJNO OF=0 转移转移89nJG/JNLE 大于转移大于转移nJGE/JNL 大于等于转移大于等于转移nJL/JNGE 小于转移小于转移nJLE/JNG 小于等于转移小于等于转移n G 大大n L 小小有关有符号数的转移指令90有关无符号数的转移指令nJA/LNBE 高于转移高于转移nJAE/JNB 高于等于转移高于等于转移nJB/JNAE 低于转移低于转移nJBE/JNA 低于等于转移低于等于转移n A 高高 n B 低低nJCXZ CX=0转移转移91条件转移指令的应用n几种条件转移指令的应用几种条件转
33、移指令的应用92转移指令例n统计内存数据段中以统计内存数据段中以TABLE为为首地址的首地址的100个个8位符号数中位符号数中正正数、负数和零元数的个数。数、负数和零元数的个数。93转移指令例(流程图)将存放各元素个将存放各元素个数的单元清零数的单元清零取首地址取首地址设串长度设串长度取一个字节数取一个字节数正数个数加正数个数加1零元素加零元素加1为负?为负?为零?为零?负数个数加负数个数加1NYNYp14494例3-43nSTART: XOR AL ,AL ;清零清零n MOV PLUS ,ALn MOV MINUS ,ALn MOV ZERO ,ALn LEA SI ,TABLE ;表的首
34、地址送;表的首地址送SIn MOV CL ,100n CLD ;DF=095例3-43CHECK: LODSB ; SI 送送AL OR AL , AL ; 影响标志影响标志 JS X1 JZ X2 INC PLUS JMP NEXT X1 : INC MINUS JMP NEXTX2 : INC ZERONEXT: DEC CL JNZ CHECK HLT962、循环控制指令n循环范围:循环范围:n以当前以当前IP为中心的为中心的-128+127范围内循环。范围内循环。n循环次数由循环次数由CX寄存器指定。寄存器指定。n循环指令:循环指令:LOOP *LOOPZ *LOOPNZ无条件循环指令
35、无条件循环指令条件循环指令条件循环指令97LOOP指令指令例 LEA BX,MAX LEA SI,BUF MOV CX,20 MOV AL,SINEXT:INC SI CMP AL,SI JA GOON ;CF=0转移 XCHG SI,ALGOON:LOOP NEXT MOV BX,AL HLT程序功能程序功能 ?98(2)条件循环指令n格式:格式: LOOPZ LABEL LOOPE LABELn循环条件:循环条件: CX 0 且且 ZF=1n格式:格式: LOOPNZ LABEL LOOPNE LABELn循环条件:循环条件: CX 0 且且 ZF=0993、过程调用和返回n用于调用一个子
36、过程;用于调用一个子过程;n子过程由程序员预先设计子过程由程序员预先设计 并装入内存并装入内存 n子过程执行结束后要返回子过程执行结束后要返回 原调用处原调用处调用程序调用程序断点断点入口入口地址地址入口地址入口地址断点地址断点地址子程序子程序100调用指令的执行过程n保护断点;保护断点;n将调用指令的下一条指令的地址(断点)压入堆栈将调用指令的下一条指令的地址(断点)压入堆栈n获取子过程的入口地址;获取子过程的入口地址;n子过程第子过程第1条指令的偏移地址和段地址条指令的偏移地址和段地址n执行子过程,含相应参数的保存及恢复;执行子过程,含相应参数的保存及恢复;n恢复断点,返回原程序。恢复断点
37、,返回原程序。n将断点偏移地址由堆栈弹出将断点偏移地址由堆栈弹出101过程调用段内调用段内调用段间调用段间调用段内直接调用段内直接调用段内间接调用段内间接调用段间直接调用段间直接调用段间间接调用段间间接调用102(1) 段内直接调用n被调用程序与调用程序在同一代码段被调用程序与调用程序在同一代码段n调用前只需保护断点的偏移地址调用前只需保护断点的偏移地址n格式:格式: CALL NEAR PROCn执行过程:执行过程:近过程名近过程名代码代码段段1调用程序调用程序被调用程序被调用程序代码代码段段1n 将断点的偏移地址压入堆栈将断点的偏移地址压入堆栈n 根据过程名找子程序入口根据过程名找子程序入
38、口103执行过程SP SP-2SP+1 IPHSP IPLIP IP+16位偏移量位偏移量104段内直接调用例 CALL TIMRE105段内间接调用段内间接调用 CALL OPRD OPRD=REG16/MEM16IP (REG16)IP (MEM16)例例 CALL BX CALL WORD PTR SI106段内间接调用例CALL WORD PTRSI间接调用间接调用44H33HCALL代代码码段段数数据据段段设:设:SI=1200H CS=6000H1200H执行第(执行第(2)条指令后:)条指令后:6000HCS =3344HIP =107(3) 段间直接调用n子过程与原调用程序不在
39、同一代码段子过程与原调用程序不在同一代码段n先将断点的先将断点的CS压栈,再压入压栈,再压入IP。调用前需保护断点的段基地址和偏移地址调用前需保护断点的段基地址和偏移地址108格式格式 n CALL FAR OPRDnOPRD是一个远过程的符号地址是一个远过程的符号地址n格式例:格式例:nCALL FAR TIMRE 109(4)段间间接调用)段间间接调用 CALL OPRD OPRD=MEM32 110段间间接调用例nCALL DWORD PTRSIXXHXXHCALL代代码码段段数数据据段段SIXXHXXHCSIP111(3) 返回指令n功能:功能:n从堆栈中弹出断点地址,返回原程序从堆栈
40、中弹出断点地址,返回原程序n格式:格式: RETRETnRETRET指令一般位于子程序的最后。指令一般位于子程序的最后。112问题(9)已知已知BX=2000H,CS=3000H,DS=5000H,52000H=4000H.求下列转移指令的转移地求下列转移指令的转移地址。址。 1. JMP BX 2. JMP WORD PTR BX113答案1. IP=(BX)=2000H,CS=3000H转移地址:转移地址: 物理地址物理地址 30000H+2000H32000H 2. DS=5000H EA=(BX)=2000H DS段的物理地址段的物理地址=52000H 52000H=4000H=IP 转移地址转移地址=(CS)X 16+IP=34000H114四、中断指令n中断中断n中断源中断源n中断的类型中断的类型n中断指令中断指令n引起引起CPU产生一次中断的指令产生一次中断的指令115中断与过程调用:n中断中断是是随机事件或异常事件引起随机事件或异常事件引起,调用调用则是事则是事 先在程序中安排好先在程序中安排好 ; n响应中断请求响应中断请求不仅要不仅要保护断点地址保护断点地址,还要保护,还要保护 FLAGS内容内容;n调用指令调用指令在指令中直接给出子程序入口地址,在指令中直接给出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GRP时间管理RevB》课件
- 2025年长沙货运从业资格证考试模拟考试题库答案
- 2025年内蒙古货物运输从业资格证考试题
- 2025年广安货运资格证考试题
- 2025年石家庄货运从业考试试题答案解析
- 粤教版八年级下册地理-第八章-珠江三角洲-单元检测
- 社区用电安全规定
- 四川省城市排水工程招标文件
- 文化产业园硅PU施工合同
- 装卸作业应急预案
- 小说网站创业计划书项目运营方案
- 电影制作与影视剧创作培训课程大纲
- 三年级上递等式计算300题
- 2023-2024学年广州市越秀区八年级上英语期末考试题(含答案和音频)
- 卫生化学期末考试习题2
- 某市区域调研报告
- 山东省青岛市2023-2024学年九年级上学期期末质量监测化学试题
- 春节的花车巡游繁花伴随的盛大游行
- 工程造价咨询服务方案(技术方案)
- 看汉字写拼音(声母+单韵母、复韵母)直接打印
- 剪映专业版画中画与蒙版使用方法教程
评论
0/150
提交评论