版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八讲 8088指令系统(续) 2009.4.7(星期二)课程内容:如何利用地址线产生脉冲8284时钟+5VMN/MXA19-A16CLKRESETREADYAD15-AD0DENDT/RBHEALESTBRDWRM/IOBHE存储器I/O接口数据总线地址总线控制总线8282锁存器(3片)OERESETDIRTOE8286收发器(2片)80868086奇偶READY三态总线两态总线KKK:MOV AL,(BX) CALL DELAY INC BX MOV AL,(BX) CALL DELAYJMP KKK(Control transfer instructions) (一)、(一)、1. JM
2、P(jmp)目标标号)目标标号JMP指令必须指定转移的目标地址(或转向地址)。指令必须指定转移的目标地址(或转向地址)。转移分成两类:段内或段间转移。转移分成两类:段内或段间转移。(1)段内直接转移:只要改变)段内直接转移:只要改变IP寄存器的内容寄存器的内容 指在同一段的范围之内进行转移指在同一段的范围之内进行转移 (IP)(IP)当前当前+目标标号所代表的地址偏移量目标标号所代表的地址偏移量地址偏移量又称为地址偏移量又称为符号地址符号地址目标标号为目标标号为8位,称为短转移。位,称为短转移。目标标号为目标标号为16位,称为近转移。位,称为近转移。 例如:代码段内有一条无条件转移指令在汇编语
3、言中使用符号地址。例如:代码段内有一条无条件转移指令在汇编语言中使用符号地址。JMP SHORT NEXT指令执行过程:指令执行过程:NEXT在汇编语言中使用符号地址在汇编语言中使用符号地址(IP)(IP)当前当前+D8(8位带符号数)位带符号数)源程序源程序 :条件转移指令:条件转移指令:JMP SHORT JMP SHORT nextnext. next:next:MOV AL,03HMOV AL,03HOPOP.OPOP03H03H.3000:1000H3000:1000H3000:1050H3000:1050H(IP)(IP)当前当前(NEXTNEXT的值的值定义为定义为50H50H)
4、(IP)=(IP)(IP)=(IP)当前当前+D8+D8内存内存向前跳,D8为正数,往回跳,D8用补码JMP SHORT ABC若ABC0F0H,则回跳16字节 (2) 段内间接转移段内间接转移: (CS)不变,只改变不变,只改变(IP)格式:格式:JMP OPROPR 为为16位寄存器、位寄存器、或存储器(除立即数以外的任何一种寻址方式)或存储器(除立即数以外的任何一种寻址方式)执行操作:执行操作: (IP) (EA)或(或(IP) (reg16) IP指针的内容根据寄存器或存储器(数据段、附加段、堆指针的内容根据寄存器或存储器(数据段、附加段、堆栈段)的内容而改变。栈段)的内容而改变。指令
5、格式举例:指令格式举例:JMP BXJMP SIJMP TABLE BX; 操作数已定义为操作数已定义为16位存储器位存储器JMP ALPHA_WORD;操作数已定义为;操作数已定义为16位存储器位存储器JMP WORD PTR BPDI;操作数已定义为;操作数已定义为16位存储器位存储器例:例: (IP)=5000H, (CS)=3000H , (DS)=1000H, (BX)=1000H (11000H)=1234H, JMP BX; (IP)=1000H,在当前段内,属于在当前段内,属于 ;寄存器寻址;寄存器寻址JMP WORD PTR BX;(CS)=3000H , (IP)=1234
6、H在当前段内,在当前段内,(PA)=(16d(DS)+(BX)=(11000H) 为为 1234H将将PA地址存储器的内容(地址存储器的内容( 1234H )给)给IP ;属于寄存器间接寻址。;属于寄存器间接寻址。(3)段间)段间直接直接转移:要修改转移:要修改IP、 CS寄存器的内容。寄存器的内容。 转到转到另一段去执行程序。另一段去执行程序。 转移目标地址转移目标地址= 新的段地址和偏移地址两部分组成。新的段地址和偏移地址两部分组成。 格式:格式:JMP FAR PTR OPR; OPR在汇编语言中使用在汇编语言中使用 符号地址符号地址 (如标号如标号AKK,假设定义在另一程序段假设定义在
7、另一程序段CC00:0044)。 转移地址与指令不在同一个段里。转移地址与指令不在同一个段里。 在机器语言中则要指定转向地址的偏移地址和段地址在机器语言中则要指定转向地址的偏移地址和段地址JMP FAR PTR AKK执行操作:执行操作: (IP)OPR所在的段内偏移地址所在的段内偏移地址0044H。 (CS)OPR所在的段的段址所在的段的段址CC00H。 直接转移通过符号地址加载直接转移通过符号地址加载IP和和CS,间接转移通过存储,间接转移通过存储器内容加载器内容加载IP和和CS . (4) 段间间接转移:段间间接转移:(CS) 、 (IP)都改变都改变格式:格式:JMP DWORD PT
8、R OPR OPR 存储器操作数存储器操作数(除立即数和寄存器以外的任何一种寻址方式)(除立即数和寄存器以外的任何一种寻址方式)执行操作:将执行操作:将4字节连续地址分别送给字节连续地址分别送给IP和和CS (IP)(EA) (CS)(EA+2)例:已知例:已知 (BX)=1000H,(,(SI)=2000H , (DS)=2000H(23000H)=2212H, (23002H)=4434HJMP DWORD PTR BXSI则:则: (BX)+(SI)=3000H (IP)=(PA)=(16d(DS)+(BX)+(SI)=(23000H)=2212H (CS)=(PA+2)=4434H2.
9、条件转移指令条件转移指令 指令格式:指令格式:J cc OPR操作:根据上一条指令所设置的条件码来判别测试条件转移。操作:根据上一条指令所设置的条件码来判别测试条件转移。每一种条件转移指令都有它的测试条件。每一种条件转移指令都有它的测试条件。满足条件时满足条件时 :(IP)(IP)当前当前+ OPR(D8) 使用相对寻址方式,范围使用相对寻址方式,范围-128+127个字节个字节不满足条件时不满足条件时:(IP)不变,顺序执行下一条指令)不变,顺序执行下一条指令(该指令为两字节长度,一字节为指令功能码,一指令为一(该指令为两字节长度,一字节为指令功能码,一指令为一个字节的相对跳转地址偏移量)个
10、字节的相对跳转地址偏移量)按转移条件不同,条件转移指令可以分为四大类:按转移条件不同,条件转移指令可以分为四大类: 以单个状态标志作为转移条件助记符以单个状态标志作为转移条件助记符 转移条件转移条件 以以CX的值为的值为0作为转移条件作为转移条件JCXZCX=0JA/JNBECFZF=0高于高于/JAE/JNB/JNCCF=0 高于或等于高于或等于/无进位无进位JB/JNAE/JCCF=1 /不高于等于不高于等于/有进位有进位JBE/JNACFZF=1 /不高于不高于以两个无符号数比较的结果作为转移条件以两个无符号数比较的结果作为转移条件以两个带符号数比较的结果作为转移条件以两个带符号数比较的
11、结果作为转移条件JG/JNLE(SF OF)ZF=0大于大于/JGE/JNL SF OF=0 大于或等于大于或等于/JL/JNGE SF OF=1 /不大于等于不大于等于JLE/JNG(SF OF)ZF=1/不大于不大于 所有条件转移指令都是相对转移形式,所有条件转移指令都是相对转移形式,(两字节指令)(两字节指令)范围(范围(-128+127)。)。当需往一个较远地方进行条件转移时,当需往一个较远地方进行条件转移时,选用条件转移转到附近一个单元,选用条件转移转到附近一个单元,然后,再用无条件转移转到较远的目的地。然后,再用无条件转移转到较远的目的地。 条件转移指令中,相当一部分指令是在比较完
12、二个数大小后,条件转移指令中,相当一部分指令是在比较完二个数大小后,根据结果而决定是否转移,根据结果而决定是否转移,条件转移指令不影响标志位条件转移指令不影响标志位例: 程序段 2000H: 3040H DONE: MOV AX,05H 2000H: 3079H JNE DONE 求DONE为何值(IP)=(IP)(IP)=(IP)当前当前程序段 2000H: 3040H DONE:MOV AX,05H 2000H: 3079H JNE DONE执行此指令时,IP指针为何OPOP05H05H.OPOPC5HC5H.2000:3079H2000:3079H2000:3040H2000:3040H
13、(IP)(IP) 当前当前内存内存2000:307BH2000:307BHDONE001100000111101111111111110001010011000001000000+307BHC5H条件转移指令应用条件转移指令应用 例:比较二个数是否相等例:比较二个数是否相等 如相等做动作如相等做动作1 否则做动作否则做动作2CMP AX,BXAction_2: 或或 CMP AX,BX action_1: ?AX BXYN ?AX BXNY 例:例:在在M中有一个首地址为中有一个首地址为array的的N字数组字数组, 要求测试其中正数、要求测试其中正数、0及负数的个数及负数的个数. (带符号数
14、判断带符号数判断)正数个数放在正数个数放在: (DI)中,)中, 0的个数放在的个数放在: (SI)中,)中,负数的个数放在负数的个数放在: N-(DI)-(SI)送()送(AX)如果没有负数转如果没有负数转skip, 如果有负数转如果有负数转neg_val程序:程序: mov cx,N ; N字数组字数组 mov bx,0mov di,bxmov si,bx again: cmp word ptr arrarybx,0 jle less_or_ag inc di ;正数个数正数个数 jmp short neat less_or_ag: jl neat inc si ; 0的个数的个数neat
15、:add bx,2 dec cx jnz again mov ax,Nsub ax,disub ax,sijz skip;没有负数没有负数jmp near ptr neg_val;有负数有负数skip: neg_val: (三)(三) 过程过程( 子程序子程序 )调用指令调用指令子程序子程序程序中具有独立功能的部分编写成独立程序模块。程序中具有独立功能的部分编写成独立程序模块。子程序(过程)定义子程序(过程)定义格式格式: 符号名符号名 (AA) PROC 类型(类型(FAR/NEAR) RET(RETURN) 符号名(符号名(AA) ENDP 子程序调用和返回指令:子程序调用和返回指令: C
16、ALL AA过程有两种类型:过程有两种类型:按过程与调用语句间的位置,过程有两种类型。按过程与调用语句间的位置,过程有两种类型。NEAR类型:调用指令与过程在同一个段中类型:调用指令与过程在同一个段中FAR类型:调用指令与过程不在同一个段中类型:调用指令与过程不在同一个段中CALL指令和指令和RET指令都不影响条件码。指令都不影响条件码。CALL( Call a procedure)调用调用 CALL调用指令调用指令调用地址由指令给出调用地址由指令给出调用时:将当前地址入栈调用时:将当前地址入栈 (CS)。)。 (IP)。)。CALL调用指令有调用指令有4 4种:种: 段内直接调用段内直接调用
17、段间直接调用段间直接调用 段内间接调用段内间接调用段间间接调用段间间接调用例例 : CSEG1 SEGMENT CALL FAR PTR subp;此处的;此处的CS:IP入栈转入栈转subp CSEG1 ENDSCSEG2 SEGMENT subp PROC FAR RET subp ENDPCSEG2 ENDS(2)、 RET( Reture from procedure)返回返回 RET返回指令返回指令放在子程序的末尾放在子程序的末尾使子程序在功能完成后返回调用程序继续执行。使子程序在功能完成后返回调用程序继续执行。*为能准确返回为能准确返回 ,返回指令类型与调用指令类型相对应。,返回指
18、令类型与调用指令类型相对应。段内返回段内返回段间返回段间返回 段内带立即数返回段内带立即数返回段间带立即数返回段间带立即数返回在子程序调用时,返回地址入栈在子程序调用时,返回地址入栈 返回时:将返回地址出栈返回时:将返回地址出栈 (IP)(段内或段间)。)(段内或段间)。 (CS)(段间)。)(段间)。操作数操作数执行操作执行操作符号地址符号地址 (SHORT)(IP) (IP)当前当前+ 8位符号地址位移量位符号地址位移量(段内短跳)(段内短跳)符号地址符号地址 ( NEAR属性属性)(IP) (IP)当前当前+ 16位符号地址位移量位符号地址位移量(段内近跳)(段内近跳)reg (16位)
19、或位)或 mem (W类型类型 )(IP) ( reg ) 或或(IP) (mem) (段内间接跳)(段内间接跳)符号地址符号地址 ( FAR属性属性)(IP) 符号地址的偏值符号地址的偏值 (段间直接跳)(段间直接跳)(CS) 符号地址的段值符号地址的段值mem ( DW类型类型 )(IP) ( mem ), (CS) (mem+2 ) (段内短跳)(段内短跳) 当前当前IP的值为控制转移指令下一条指令的偏移地址。的值为控制转移指令下一条指令的偏移地址。 位移量位移量 = 符号地址的偏移量符号地址的偏移量 - 当前当前IP的值。的值。 符号地址(目标地址)符号地址(目标地址)= 当前当前IP
20、的值的值 + 位移量位移量 指令格式:指令格式: JMP 操作数操作数 由由CS是否变化、以及操作数类型决定情况如下表是否变化、以及操作数类型决定情况如下表转移方式转移方式CS操作数操作数跳转范围跳转范围段内直接短段内直接短 方方 式式不变不变符号地址符号地址(SHORT)-128 127即即0FFH段内直接近段内直接近 方方 式式不变不变符号地址符号地址(NEAR属性属性)一个段内一个段内0FFFFH段段 内间接方式内间接方式不变不变Reg mem (W类型类型)一个段内一个段内0FFFFH段段 间直接方式间直接方式变变符号地址符号地址(FAR属性属性)整个内存整个内存0FFFFFH段段 间
21、间接方式间间接方式变变mem(DW类型类型)整个内存整个内存0FFFFFH 各控制转移指令允许使用的转移方式各控制转移指令允许使用的转移方式转移方式转移方式无条件转移无条件转移JMP条件转移条件转移Jcc循环转移循环转移LOOPxx 子程调用子程调用CALL段内直接短段内直接短 方方 式式 段内直接近段内直接近 方方 式式段段 内间接方式内间接方式段段 间间 直接方式直接方式段段 间间接间间接例例 : JMP again ()JMP BX()JMP WORD PTR BX()JMP DWORD PTR()JZ AX (不能是字,不能是字,AX)() JNZ next (?) (若若 next的
22、位移量超出的位移量超出-128127)(四)循环控制指令(四)循环控制指令格式格式: LOOPxx符号地址符号地址 执行执行 操作操作 : (CX) (CX)- 1 此此操作不影响标志操作不影响标志 检查转移条件检查转移条件xx,满足转向目标地址去执行,满足转向目标地址去执行; 不满足执行不满足执行LOOPxx后一条指令后一条指令转移方式转移方式 只允许段内直接短方式,跳转范围只允许段内直接短方式,跳转范围-128127助记符助记符转移条件转移条件不转移条件不转移条件LOOPCX0CX=0LOOPZCX0且且ZF=1 (相等)(相等)CX=0或或ZF=0(不等)(不等)LOOPNZCX0且且Z
23、F=0 (不等)(不等)CX=0或或ZF=1 (相等)(相等)与条件转移指令不同的是:与条件转移指令不同的是:循环指令隐含循环指令隐含 ( CX ) 减操作。减操作。例:用循环指令将例:用循环指令将BL寄存器的内容按二进制形式显示出来寄存器的内容按二进制形式显示出来学习:学习: LOOP指令指令MOV CX , 8 next: ROL BL , 1 MOV DL , BL AND DL , 0000 0001B ADD DL , 0011 0000B MOV AH , 2 INT 21H DEC CX JNZ nextLOOP next循环指令说明:循环指令说明: LOOP退出循环条件是(退出
24、循环条件是(CX)=0 LOOPZ和和LOOPNZ提供了提前结束循环的可能提供了提前结束循环的可能, 不一定要等到不一定要等到(CX)=0才退出循环。才退出循环。 在串中查找字符,查到了,就可退出,在串中查找字符,查到了,就可退出,可用可用LOOPNZ,不相等时继续查找。,不相等时继续查找。比较两串时,当有字符不等,就可退出,说明两字符串不等。比较两串时,当有字符不等,就可退出,说明两字符串不等。可用可用LOOPZ,当相等时继续比较。,当相等时继续比较。执行完执行完 LOOPNZ或或LOOPZ后,根据后,根据ZF标志的值判断结果标志的值判断结果对查找字符,对查找字符,ZF=1,说明找到;否则没
25、有找到。说明找到;否则没有找到。 对串比较,对串比较,ZF=1, 说明两串相等;否则不等。说明两串相等;否则不等。 例:例: 在在string字符串中查找空格字符,串长度为字符串中查找空格字符,串长度为N。用条件转移:用条件转移: JZ MOV CX, N MOV AX, SEG string MOV DS, AX LEA BX,string MOV AL,20H next: CMP AL,BX JZ find INC BX DEC CX JNZ next 未找到处理未找到处理 Find: 找到处理找到处理 修改偏址修改偏址BXYNAL 关键字关键字CX 串长度串长度NDS:BX 串首址串首址
26、判判BX是关键字?是关键字? (CX) (CX)- -1找到处理找到处理未找到处理未找到处理 (CX) = 0 ?YN结束出口结束出口 MOV CX,28H MOV SI,0FFFFHNEXT1:INC SI CMP BYTE PTR SI,0 LOOPZ NEXT1 ;当;当Z=1、(、(CX)0循环;循环; 当当Z=0,或(,或(CX)=0结束循环。结束循环。 JNZ OKK ;当找到非零元素转;当找到非零元素转OKK。 CALL DISPLAY1;当找不到非零元素转;当找不到非零元素转DISPLAY1OKK: CALL DISPLAY2用用LOOPZ和和LOOPNZ指令提供提前结束循环的
27、可能性。指令提供提前结束循环的可能性。有时需要字符串中查找一个字符,找到后可提前结束循环,有时需要字符串中查找一个字符,找到后可提前结束循环,用用LOOPZ、LOOPNZ来处理。来处理。例:例:40个元素构成的数组,找出第一个非零元素。个元素构成的数组,找出第一个非零元素。DISPLAY1 RETDISPLAY2 RET指令JMP、CALL 、Jcc、LOOPxx本身对标志无影响。4、中断指令、中断指令q 中断(中断(Interrupt):): 有时当系统运行或程序运行期间遇到某些特殊情况,有时当系统运行或程序运行期间遇到某些特殊情况, 需要计算机自动执行一组专门的例行程序来进行处理。需要计算
28、机自动执行一组专门的例行程序来进行处理。q 中断例行程序(或中断子程序)中断例行程序(或中断子程序)(Interrupt routine):所执行的这组程序就称为中断子程序。所执行的这组程序就称为中断子程序。q 种类:种类: 中断分为内部(软)中断和外部(硬)中断两种。中断分为内部(软)中断和外部(硬)中断两种。 内部中断内部中断如除法运算中除数为如除法运算中除数为0、中断指令引起的中断。、中断指令引起的中断。 外部中断外部中断处理处理I/O设备与设备与CPU之间的通信。之间的通信。q CPU响应一次中断自动完成三件事情:响应一次中断自动完成三件事情:(PSW)入栈)入栈 保护现场,保护现场,
29、(CS),(),(IP)保存入栈)保存入栈 保留断点,保留断点, 转中断例行程序去执行。转中断例行程序去执行。q 中断返回时:中断返回时: 恢复(恢复(IP)、()、(CS)及()及(PSW)中断向量:中断例行程序入口地址。中断向量:中断例行程序入口地址。IBM-PC中,存储器的最底地址中,存储器的最底地址00000H003FFH为中断向量为中断向量区,区, 存放存放256种类型中断例行程序入口地址种类型中断例行程序入口地址,每个中断向量每个中断向量占占4个单元个单元。中断指定类型号中断指定类型号N 4取得指定类型的中断向量地址。取得指定类型的中断向量地址。例:中断类型例:中断类型9,9 4=
30、36 00024H00027H单元中放中断向量。单元中放中断向量。IBM-PC机中为每个类型规定了一种功能。机中为每个类型规定了一种功能。中断类型中断类型功能功能类型类型0除数为除数为0中断例行程序中断例行程序类型类型1单步单步类型类型2非屏蔽中断,非屏蔽中断, NMI类型类型3设置断点设置断点类型类型4溢出处理中断,溢出处理中断,INTO指令指令类型类型10显示设备中断显示设备中断类型类型20程序结束中断程序结束中断类型类型21DOS系统功能调用功能程序系统功能调用功能程序*除非特别注明,类型号是以除非特别注明,类型号是以16进制形式表示的。进制形式表示的。(1). 介绍几条指令:介绍几条指
31、令:INT n,IRET 格式:格式:INT n ; n常数或表达式,常数或表达式,n=0255或或INT 执行操作:执行操作: (SP)(SP)-2, (SP) (PSW)(SP)(SP)-2,(SP) (CS)(SP)(SP)-2, (IP)(IP) (N4)(CS) (N4+2)清除清除IF、TF,避免进入中断以后不被外面其它中断所打断,避免进入中断以后不被外面其它中断所打断 及进入中断以后按单步执行。及进入中断以后按单步执行。q 类型类型03的中断称为内部中断。的中断称为内部中断。 类型类型0 :指令系统没有:指令系统没有INT0这条指令这条指令 除数为除数为0中断中断 除数为除数为0
32、 :它:它既不是外部中断既不是外部中断 也不是软件中断也不是软件中断。 是是由由 CPU自身产生的自身产生的,所以无对应中断指令。,所以无对应中断指令。 有符号数进行除法所得的商超出规定范围有符号数进行除法所得的商超出规定范围有符号数进行除法运算,所得的有符号数进行除法运算,所得的商超出规定范围商超出规定范围,CPU自动产生类型为自动产生类型为0的中断的中断,转入响应的中断处理程序。,转入响应的中断处理程序。中断处理程序入口地址的地址中断处理程序入口地址的地址类型类型00000H00001H类型类型0(IP)00002H00003H类型类型0(CS)00004H00005H类型类型1(IP)00006H00007H类型类型1(CS)00008H00009H类型类型2(IP)0000AH0000BH类型类型2(CS)0000CH0000DH类型类型3(IP)0000EH0000FH类型类型3(CS)00010H00011H类型类型4(IP)00012H00013H类型类型4(CS)003FCH003FDH类型类型255(IP)003FEH003FFH类型类型255(CS) INTO跟在有符号数跟在有符号数+、-后面:后面:* 这条指令可以写在一条算术指令后面。这条指令可以写在一条算术指令后面。 若产生溢出,若
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老护理服务质量提升策略
- 护理礼仪的非言语行为
- 河南省开封市通许县2025-2026学年八年级上学期期中生物学试题(含答案)
- 新生儿体温测量与护理视频课件
- 常见疼痛类型及基础护理措施
- 染发护理技术操作规范
- 老人出院协议书
- 能作废的协议书
- 能借款合同范本
- 订房协议位合同
- 吊装作业危害分析评价记录表
- 小学毕业班动员会教学课件
- 汽车坡道玻璃雨棚施工方案
- 护理质量检查记录69528
- 年产10吨功能益生菌冻干粉的工厂设计改
- 盆底肌表面肌电解读
- (投标书范本)礼品、日用品、办公用品标书模板
- 《南州六月荔枝丹》公开课PPT
- 四川省地震灾区重大地质灾害治理工程资料全套表格
- 核对稿-700单元联锁
- 山塘整治工程建设方案
评论
0/150
提交评论