计算机硬件技术第03章新教材4glast课件

上传人:桔**** 文档编号:570882978 上传时间:2024-08-07 格式:PPT 页数:56 大小:1.14MB
返回 下载 相关 举报
计算机硬件技术第03章新教材4glast课件_第1页
第1页 / 共56页
计算机硬件技术第03章新教材4glast课件_第2页
第2页 / 共56页
计算机硬件技术第03章新教材4glast课件_第3页
第3页 / 共56页
计算机硬件技术第03章新教材4glast课件_第4页
第4页 / 共56页
计算机硬件技术第03章新教材4glast课件_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《计算机硬件技术第03章新教材4glast课件》由会员分享,可在线阅读,更多相关《计算机硬件技术第03章新教材4glast课件(56页珍藏版)》请在金锄头文库上搜索。

1、第第3 3章章第第3章:章: 3.3.5 程序控制类指令程序控制类指令 程程序序控控制制类类指指令令用用于于实实现现分分支支、循循环环、过过程程等等程程序序结结构构,是是仅仅次次于于传传送送指指令令的常用指令的常用指令 控控制制转转移移类类指指令令通通过过改改变变IP(和和CS)值值,实现程序执行顺序的改变实现程序执行顺序的改变第第3章:目标地址的寻址方式章:目标地址的寻址方式直接寻址方式直接寻址方式指指令令代代码码中中提提供供目目的的逻逻辑辑地地址址,转转移移后后的的CS和和IP值值直接直接来自指令操作码后的目的地址操作数来自指令操作码后的目的地址操作数间接寻址方式间接寻址方式目的地址从寄存

2、器或存储单元中目的地址从寄存器或存储单元中间接间接获得获得用标号表达用标号表达用寄存器或存储器操作数表达用寄存器或存储器操作数表达第第3章:目标地址的寻址范围:段内寻址章:目标地址的寻址范围:段内寻址段内转移段内转移近转移(近转移(near)在在当当前前代代码码段段64KB范范围围内内转转移移( 32KB范围)范围)不不需需要要更更改改CS段段地地址址,只只要要改改变变IP偏偏移地址移地址段内转移段内转移短转移(短转移(short)转转移移范范围围可可以以用用一一个个字字节节表表达达,在在段段内内128127范围的转移范围的转移代代码码段段代代码码段段第第3章:目标地址的寻址范围:段间寻址章:

3、目标地址的寻址范围:段间寻址段间转移段间转移远转移(远转移(far)从当前代码段跳转到另一个代码段,从当前代码段跳转到另一个代码段,CS段地址段地址:IP偏移地址偏移地址代代码码段段代代码码段段第第3章:章:程序控制类指令分为程序控制类指令分为5类类1. 无条件转移无条件转移2. 调用与返回调用与返回3. 条件转移条件转移4. 循环转移循环转移5.中断中断第第3章:一、章:一、 无条件转移指令无条件转移指令 格式:格式:JMP 目标标号目标标号 ;无条件转移到目标单元无条件转移到目标单元 指令标号指令标号直接转移,段内直接转移,段内/段间段间 REG间接转移,段内间接转移,段内 (16位通用位

4、通用) 内存内存间接转移,段内间接转移,段内/段间段间 第第3章:章: 1. 段内直接转移段内直接转移转移的目标标号转移的目标标号直接出现在指令中直接出现在指令中格式:格式:JMP DST ; 目标地址目标地址 可使用符号地址可使用符号地址 第第3章:章: 1. 段内直接转移段内直接转移 若转移范围若转移范围128127 段内直接短转移段内直接短转移符号地址前加操作符符号地址前加操作符SHORT格式格式 :JMP SHORT DST 若若转转移移范范围围为为整整个个CS段段内内任任一一位位置置(+32KB)段内直接近转移段内直接近转移 符号地址前加操作符符号地址前加操作符NEAR PTR格式:

5、格式:JMP NEAR PTR DST 可以省略可以省略第第3章:章: 1. 段内直接转移段内直接转移例:例:JMP 2000H ;直直接接转转移移到到IP+2000H去去执执行行指令指令JMP SHORT LPI ;段内短转移,转向符号地址段内短转移,转向符号地址 LPI处处JMP NEAR PTR KKK ;段内近转移,转向符段内近转移,转向符 号地址号地址KKK处处 第第3章:章: 2. 段内间接转移段内间接转移格式:格式:JMP DST; 寄存器寄存器IPREG 内存单元内存单元IP(EA+1),(EA)例:例:JMP BX JMP WORD PTR BX+25H若若(DS)=2000

6、H,(BX)=0100H(20125H)=34H,(20126H)=12H则第一条指令执行的结果是则第一条指令执行的结果是: IP=0100H 第二条指令执行的结果是第二条指令执行的结果是: IP=1234H第第3章:章: 3. 段间直接转移段间直接转移JMP FAR PTR DST ;IPDST的段内偏移地址的段内偏移地址 CSDST所在段的段地址所在段的段地址 直接给直接给seg16:offset16数值表达式数值表达式 符号地址前加符号地址前加FAR PTR例例1:DST用数值表达式表示用数值表达式表示JMP F000H:005BH ;可省略可省略FAR属性说明属性说明 CSF000H,

7、 IP005BH第第3章:章: 3. 段间直接转移段间直接转移例例2:DST用符号地址表示用符号地址表示CSEG1 SEGMENT JMP FAR PTR PROGCSEG1 ENDSCSEG2 SEGMENTPROG: .CSEG2 ENDS第第3章:章: 4. 段间间接转移段间间接转移格式:格式:JMP DWORD PTR DST ;IP(EA) 双双 字字 数数 据据 CS(EA+2) 例:例:JMP DWORD PTR BX若若(DS)=2000H,(BX)=0100H(20100H)=1000H,(20102H)=4A00H则执行后:则执行后:IP=1000H,CS=4A00H 程序

8、从程序从4B000H单元开始继续执行指令。单元开始继续执行指令。 请问段间间接转移可以用请问段间间接转移可以用REG吗?吗?JMP指令不影响指令不影响FR第第3章:二、子程序指令(调用与返回)章:二、子程序指令(调用与返回)子程序是完成特定功能的一段程序子程序是完成特定功能的一段程序当当主主程程序序(调调用用程程序序)需需要要执执行行这这个个功功能能时时,采采用用CALL调调用用指指令令转转移移到到该该子子程程序序的的起起始始处处执行执行当当运运行行完完子子程程序序功功能能后后,采采用用RET返返回回指指令令回到主程序继续执行回到主程序继续执行演示演示 转移转移指令指令有去无回有去无回 子程序

9、子程序调用需要返回调用需要返回,其其中中利利用用堆堆栈栈保保存存返返回回地地址址第第3章:章: 1. 子程序调用指令子程序调用指令CALLCALL指令分成指令分成4种类型(类似种类型(类似JMP)CALL label;段内、直接段内、直接CALL r16/m16;段内、间接段内、间接CALL far ptr label ;段间、直接段间、直接CALL far ptr mem ;段间、间接段间、间接注意:注意:CALL指令不采用段内直接指令不采用段内直接短短调用方式调用方式第第3章:章: 1. 子程序调用指令子程序调用指令CALLCALL指令需要保存返回地址:指令需要保存返回地址:n段内调用段内

10、调用入栈偏移地址入栈偏移地址IPSPSP2,SS:SPIPn段间调用段间调用入栈偏移地址入栈偏移地址IP和段地址和段地址CSSPSP2,SS:SPCSSPSP2,SS:SPIP第第3章:章: 段内直接调用段内直接调用 目标地址在指令中给出目标地址在指令中给出格式:格式:CALL NEAR PTR DST ; SPSP2 SP+1,SP原原IP进栈进栈 IP子子程程序序偏偏移移地地址址 ;子子程程序序 入口地址入口地址 装入装入其中,其中,NEAR PTR可省略可省略 DST子程序名子程序名 或子程序首址或子程序首址 第第3章:章: 段内间接调用段内间接调用格式:格式:CALL NEAR PTR

11、 DST SPSP2 SP+1,SP原原IP IP(EA) ;转向子程序入口转向子程序入口 DST REG 内存单元内存单元例:例:CALL BXCALL WORD PTR BX 第第3章:章: 段间直接调用段间直接调用格式:格式:CALL FAR PTR DST ; SP SP-2其中:其中:DST为另一为另一 SP+1,SP 原原CS段中某子程序的段中某子程序的 SP SP-2标号(或入口地标号(或入口地 SP+1,SP 原原IP址址 IP 偏偏移移地地址址 ;子子程程序序入入口口 CS段段地地址址 地地址址装入装入例:例: CALL 1000H:0100H ;IP=0100H CS=10

12、00H CALL FAR PTR SUBPROC 第第3章:章: 段间间接调用段间间接调用格式:格式:CALL DWORD PTR DST ; SP SP-2 SP+1,SPCS SPSP-2 SP+1,SPIP IP(EA) CS (EA+2) 例:例:CALL DWORD PTR DI ;IPDI CSDI+2第第3章:章:CALL 指令对标志位无影响指令对标志位无影响 实实际际应应用用中中,较较多多采采用用直直接接寻寻址址方方式式,DST为为调用的子程序调用的子程序(过程过程)名。名。 如:如:CALL NEAR PTR 子程序子程序(过程过程)名名CALL FAR PTR 子程序子程序

13、(过程过程)名名第第3章:章: 2. RET 返回指令返回指令 段内返回段内返回当过程被定义为当过程被定义为NEAR时时 格格式式: RET ; IP SP+1,SP ;断断点出栈点出栈 SPSP+2第第3章:章: 2. RET 返回指令返回指令 段间返回段间返回当过程被定义为当过程被定义为FAR时时格式:格式: RET; IP SP+1,SP SP SP+2 CS SP+1,SP SP SP+2 差别:差别:段内返回代码为段内返回代码为 C3H(或(或C2H) 段间返回代码为段间返回代码为 CBH(或(或CAH)第第3章:章: 2. RET 返回指令返回指令可归纳为可归纳为: RET ; 近

14、(近(NEAR) IP断点(偏)出栈断点(偏)出栈 SP SP+2 远(远(FAR) CS:IP 断点出栈断点出栈 SP SP+4第第3章:章: 2. RET 返回指令返回指令RET n 带立即数返回带立即数返回 ; RET SPSP+nn16位立即数,或数值表达式,称为弹出位立即数,或数值表达式,称为弹出 (POP)值。值。 例例: ;子子程序程序 MOV AX, N1 PUSH AX PROG-A PROC NEAR MOV AX, N2 PUSH AX RET 4 CALL PROG-A PROG-A ENDP MOV SUM,AX 第第3章:例:十六进制转换为章:例:十六进制转换为AS

15、CII码的子程序码的子程序;子程序:;子程序:将将DLDL低低4 4位的一位位的一位1616进制数进制数转换转换成成ASCIIASCII码码htoaschtoascprocprocand dl,0fhand dl,0fh;只取;只取DLDL的低的低4 4位位or dl,30hor dl,30h;DLDL高高4 4位变成位变成3 3cmp dl,39hcmp dl,39h;是;是0 09 9,还是,还是0Ah0Ah0Fh ?0Fh ?jbe htoendjbe htoend;是;是0 09 9,转移,转移add dl,7add dl,7;是;是0Ah0Ah0Fh0Fh,加上,加上7 7htoen

16、d:htoend: retret;子程序返回;子程序返回htoaschtoascendpendp;主程序:调用;主程序:调用子程序子程序mov dl,28hcall htoasc第第3章:三、章:三、 条件转移指令条件转移指令条条件件转转移移指指令令Jcc根根据据指指定定的的条条件件确确定定程程序序是否发生转移。其通用格式为:是否发生转移。其通用格式为:Jcc label;条件满足条件满足,发生转移发生转移;装入新的;装入新的IP;否则,顺序执行否则,顺序执行label是一个标号、一个是一个标号、一个8位位移量,位位移量,Jcc只支持段内直接短转移只支持段内直接短转移(-128127)第第3章

17、:章:Jcc指令的分类指令的分类Jcc指令不影响标志,但要利用标志(表指令不影响标志,但要利用标志(表310)根据利用的标志位不同,分成三种情况:根据利用的标志位不同,分成三种情况: 判断单个标志位状态判断单个标志位状态 比较无符号数高低比较无符号数高低 比较有符号数大小比较有符号数大小第第3章:章:1. 判断单个标志位状态判断单个标志位状态 JZ/JE和和JNZ/JNE利用零标志利用零标志ZF,判断结果是否为零(或相等),判断结果是否为零(或相等) JS和和JNS利用符号标志利用符号标志SF,判断结果是正是负,判断结果是正是负 JO和和JNO利用溢出标志利用溢出标志OF,判断结果是否产生溢出

18、,判断结果是否产生溢出 JP和和JNP利用奇偶标志利用奇偶标志PF,判断结果中,判断结果中“1”的个数是偶是奇的个数是偶是奇 JC和和JNC利用进位标志利用进位标志CF,判断结果是否进位或借位,判断结果是否进位或借位第第3章:章:1. 判断单个标志位状态判断单个标志位状态 适适用用于于:测测试试某某种种运运算算结结果果,并并根根据据不不同同的的状状态态标标志志产产生生程程序序分分支支,以以便便做做不不同同的的处理。处理。第第3章:章:例例1:ADD AX, BXJC TOO_BIG;若加法有进位转至若加法有进位转至TOO-BIG 处理处理SUB AL, BLJZ ZERO;若若减减法法结结果果

19、为为0,转转至至ZERO处处 理理第第3章:例题章:例题 判断单个标志位状态判断单个标志位状态题题目目:将将AX中中存存放放的的无无符符号号数数除除以以2,如如果是奇数则加果是奇数则加1后除以后除以2问问题题:如如何何判判断断AX中中的的数数据据是是奇奇数数还还是是偶偶数?数?解解答答:判判断断AX最最低低位位是是“0”(偶偶数数),还还是是“1”(奇数)。可以用位操作类指令(奇数)。可以用位操作类指令1:用用逻逻辑辑与与指指令令将将除除最最低低位位外外的的其其他他位位变变成成0,保保留留最最低低位位不不变变。判判断断这这个个数数据据是是0,AX就就是是偶偶数数;否则,为奇数否则,为奇数2:将

20、将最最低低位位用用移移位位指指令令移移至至进进位位标标志志,判判断断进进位位标标志是志是0,AX就是偶数;否则,为奇数就是偶数;否则,为奇数第第3章:章:2. 比较无符号数高低比较无符号数高低无无符符号号数数的的大大小小用用高高(Above)、低低(Below)表示,利用)表示,利用CF、ZF标志确定标志确定JB(JNAE):目的操作数低于源操作数):目的操作数低于源操作数JNB(JAE):目的操作数不低于源操作数):目的操作数不低于源操作数JA ( JNBE ):目的操作数高于源操作数):目的操作数高于源操作数JNA ( JBE ):目的操作数不高于源操作数):目的操作数不高于源操作数第第3

21、章:章:3. 比较有符号数大小比较有符号数大小判判断断有有符符号号数数的的大大(Greater)、小小(Less),),OF、SF 、 ZF标志确定标志确定JL(JNGE):目的操作数小于源操作数):目的操作数小于源操作数JNL(JGE):目的操作数不小于源操作数):目的操作数不小于源操作数JG ( JNLE ):目的操作数大于源操作数):目的操作数大于源操作数JNG ( JLE ):目目的的操操作作数数不不大大于于源源操操作作数数第第3章:章:3. 比较有符号数大小比较有符号数大小 例:例: MOV AL,0FEH CMP AL,01H JG GREATER 测试两数是否相等,均可以用测试两

22、数是否相等,均可以用JE/JZ 或或JNE/JNZ 条件转移指令对标志位无影响。条件转移指令对标志位无影响。第第3章:例章:例 求较大值求较大值cmp ax,bx;比较比较AX和和BXjae next;若若AXBX,转移,转移xchg ax,bx ;若若AXBX,交换,交换next:mov wmax,ax第第3章:例章:例 求符号数的最大值求符号数的最大值设设数数据据区区1000H开开始始的的区区域域中中,存存放放着着50个个字字节节的的符符号号数。要求找出其中最大的一个数并存到数。要求找出其中最大的一个数并存到0FFFH单元单元。 MOV BX, 1000H MOV AL, BX MOV C

23、X, 31H(49)L1: INC BX CMP AL, BX JGE L2 MOV AL, BX 多次重复操作多次重复操作 L2: DEC CX JNE L1 MOV BX, 0FFFH MOV BX, AL第第3章:四、循环指令章:四、循环指令LOOP label ;循环指令循环指令;首首先先CXCX1;然然后后判判断断;若若CX0,转转移移JCXZ label ;为为0循环指令循环指令:如果:如果CX0,则转移,则转移label操操 作作 数数 采采 用用 段段 内内 直直 接接 短短 转转 移移 ( -128+127)还还有有LOOPZ/LOOPE和和LOOPNZ/LOOPNE两条指令

24、两条指令dec cxjnz label第第3章:章:1. LOOP 指令指令格式格式: LOOP 目标标号目标标号 ;CXCX-1,CX 0则循环则循环DEC CX JNZ 目标标号目标标号第第3章:章:1. LOOP 指令指令 MOV CX,NBEGIN: 循环体循环体 DEC CX JNZ BEGIN MOV CX,NBEGIN: 循环体 LOOP BEGIN 第第3章:例章:例 LOOP 指令指令例例1: 有有一一个个首首地地址址为为ARRAY的的M个个字字的的数数组组,试试编编写写一一个个程程序序求求出出该该数数组组的的内内容容之之和和(不不考考虑虑溢溢出出),并并把把结结果存入果存入

25、TOTAL中。中。 MOV CX, M;字数组个数送入字数组个数送入CX MOV AX, 0 LEA SI, ARRAYSTART_LOOP: ADD AX, SI ;将一个数组元素和送入将一个数组元素和送入AX ADD SI, 2;修改数组指针修改数组指针 LOOP START_LOOP ;若若CX不为不为0则重复循环则重复循环 MOV TOTAL, AX;结果送结果送TOTAL第第3章:循环指令章:循环指令2.LOOPE/LOOPZ指令指令有附加条件的循环指令有附加条件的循环指令格式格式: LOOPE/LOOPZ 目标标号目标标号 ;CXCX-1,若若CX0且且ZF=1,则循环则循环 3.

26、LOOPNE/LOOPNZ指令指令格式格式: LOOPNE/LOOPNZ 目标标号目标标号 ;CXCX-1,若若CX0且且ZF=0,则循环则循环4.JCXZ指令指令格式格式: JCXZ 目标标号目标标号;CX=0,则循环则循环 不影响不影响CX的内容的内容第第3章:例章:例 LOOPZ 指令指令 检检查查64kB内内存存单单元元的的读读写写性性能能.为为此此,依依次次向向每每个个内内存存单单元元写写入入指指定定的的数数据据01010101B,然然后后读读出出来来进进行行比比较较,若若正正确确则转入处理正确的程序段则转入处理正确的程序段,否则转入出错处理程序段否则转入出错处理程序段. MOV C

27、X, 0000H ;设置计数器初值设置计数器初值 MOV BX, 0000H ;设置地址指针设置地址指针 MOV AL, 01010101B ;校验码校验码55HAGAIN: MOV BYTE PTR BX, AL INC BX CMP BYTE PTRBX-1, AL LOOPZ AGAIN JCXZ OKERROR: 出错处理出错处理OK: 正确处理正确处理第第3章:章: 3.3.6 处理器控制类指令处理器控制类指令处处理理器器控控制制类类指指令令用用来来控控制制CPU的的状状态态,使使CPU暂停、等待或空操作等暂停、等待或空操作等 包括三种类型包括三种类型:1. 标志操作指令(第标志操作

28、指令(第17条)条)2. 外部同步指(第外部同步指(第811条)条)3. 空操作指令(第空操作指令(第12条)条)第第3章:章: 3.3.6 处理器控制类指令处理器控制类指令处处理理器器控控制制类类指指令令用用来来控控制制CPU的的状状态态,使使CPU暂停、等待或空操作等暂停、等待或空操作等1.进位标志操作进位标志操作 CLC;CF0 这三条指令常和这三条指令常和 STC ;CF1 ADC,RCL,RCR CMC;CFCF 指指令令配配合合使用使用第第3章:一、标志操作指令章:一、标志操作指令2.方向标志操作方向标志操作 CLD ;DF0 STD ;DF1 第第3章:一、标志操作指令章:一、标志操作指令3.中断标志操作中断标志操作 CLI ;IF0 以以控控制制CPU是否响应是否响应 STI ;IF1 可可屏屏蔽中断蔽中断INTR引引 线上出现的外部中线上出现的外部中 断请求断请求 CLI禁禁止止 CPU响响应应 STI允许允许第第3章:二章:二.、 同步控制类同步控制类1. ESC 交权(处理机脱离指令)交权(处理机脱离指令)3. WAIT 等待等待4. LOCK 封锁总线封锁总线 三三. 其他控制类指令其他控制类指令暂停:暂停:HLT空空操操作作:NOP 等等同同于于“xchg ax,ax”指指令令

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号