1、3程序控制指令的基本功能和格式。难点:逻辑运算和移位指令的基本功能和格式。要求掌握知识点和分析方法1逻辑运算和移位指令的格式、功能及应用方法;2串操作指令的格式、功能及应用方法;3程序控制指令的格式、功能及应用方法。启发与提问1逻辑移位和算术移位指令的区别?教学手段多媒体+板书作业布置思考题:1远跳转和近跳转的区别?3.2, 3.5 3.9, 3.11 3.12, 3.14主 要参考资料备注注:教案按授课次数填写,每次授课均应填写一份。重复班授课可不另填写教案。长安大学讲稿(第八讲)讲 授 内 容三、逻辑运算和移位类1.逻辑运算逻辑运算指令对操作数的要求大多与MOV指令相同。逻辑运算是按位操作
2、的,它包括AND(与)、OR (或)、NOT(非)、XOR(异或)和TEST(测试)指令。除“非”运算指令外,其余指令的执行都会使标志位OF=CF=0,AF位无定义,SF、ZF和PF根据运算结果设置。“与”运算指令格式: AND OPRD1,OPRD2操作: 两操作数相“与”,结果送目标地址。【例】 要屏蔽AL中的高4位。AND AL,00001111B【例】 AND AL,AL此指令执行前后,(AL)无变化,但执行后使标志位发生了变化,即CF=0,OF=0。“或”运算指令 OR OPRD1,OPRD2 两操作数相“或”,结果送目标地址【例】 (AL)=0FH, OR AL,10000000B
3、(AL)=8FH【例】 OR AL,AL指令执行前后,(AL)不变,但执行后标志位发生了变化,即CF=0,OF=0。“非”运算指令NOT OPRD操作数按位取反再送回原地址指令中的操作数不能是立即数指令的执行对标志位无影响例:NOT BYTE PTRBX“异或”运算指令 XOR OPRD1,OPRD2 两操作数相“异或”,结果送目标地址两操作数自身相异或,结果XOR AX,AX“测试”指令 TEST OPRD1,OPRD2 执行“与”运算,但运算的结果不送回目标地址。应用:常用于测试某些位的状态“测试”指令例从地址为38F0H的端口中读入一个字节数,如果该数的bit1位为1,则可从38FEH端
4、口将DATA为首地址的一个字输出,否则继续读写端口数据。编写相应的程序段。LEA SI,DATAMOV DX,38F0HWATT:IN AL,DXTEST AL,02HJZ WATT ;ZF=1转移MOV DX,38FEHMOV AX,SIOUT DX,AX2. 移位指令(1) 逻辑/算术左移指令。 SHL/SAL DST, CNT 指令按照CNT指定的移位次数对目的操作数进行左移位,移位结果送DST,最后一次移出的位送CF中。移动一位后,若CF与最高不相等,则OF=1;否则OF=0MOV AL, 41HSHL(SAL) AL,1执行结果(AL)82H, CF0,OF1【例】 将(AX)乘以1
5、0。十进制数10的二进制形式为1010,即权为2和权为8的位为1,故采用2(AX)+8(AX),结果为10(AX),程 序段如下: SHL AX,1 MOV BX,AX ADD AX,BX逻辑右移 SHR DST, CNT 移动一位后,若次高位与最高位不相等,则OF=1;算术右移(有符号数的右移) SAR OPRD,ISAR OPRD,CL循环移位指令不带进位位的循环移位带进位位的循环移位循环移位指令的格式、对操作数的要求与非循环移位指令相同循环移位指令的应用例如:有一个4字节数存放在DX和AX中, (DX)=0123H, (AX)=0456H, 要求该数的4个字节一起左移一位。 执行 SAL
6、 AX, 1 RCL DX, 1 注意: 将AX的D15移到CF,再将CF移到DX的D0,DX的D15最后移到CF中。用于对某些位状态的测试;测试BL寄存器的第三位状态,并保持原内容不变。MOV CL, 04HROL BL,CLJNZ ZEROROR BL,CL ZERO: ROR BL, CL例:将1000H开始存放的四个压缩BCD码转换为ASCII码存放在3000H开始的单元中去。MOV SI,1000HMOV DI,3000HMOV CX,4 BBB:MOV AL,SIMOV BL,AL AND AL,0FH OR AL,30HMOV DI,ALINC DIMOV AL,BLPUSH C
7、XMOV CL,4SHR AL,CLINC SIPOP CXDEC CXJNZ BBBHLT四、串操作指令针对数据块或字符串的操作;可实现存储器到存储器的数据传送;待操作的数据串称为源串,目标地址称为目标串。串操作指令的特点源串一般存放在数据段,偏移地址由SI指定。允许段重设;目标串必须在附加段,偏移地址由DI指定;指令自动修改地址指针,修改方向由DF决定。DF=0 增地址方向;DF=1 减地址方向;数据块长度值由CX指定可增加自动重复前缀以实现自动修改CX内容。重复前缀REP 无条件重复REPE 相等重复REPZ 为零重复REPNE 不相等重复REPNZ 不为零重复串传送指令MOVS OPR
8、D1,OPRD2MOVSBMOVSW串传送指令常与无条件重复前缀连用对比用MOV指令和MOVS指令实现将200个字节数据从内存的一个区域送到另一个区域的程序段。用串传送指令实现200个字节数据的传送:LEA SI,MEM1LEA DI,MEM2MOV CX,200CLDREP MOVSB串比较指令CMPS OPRD1,OPRD2CMPSBCMPSW串比较指令常与条件重复前缀连用,指令的执行不改变操作数,仅影响标志位。测试200个字节数据是否传送正确, 如果不正确,找出第一个不相等的字符,并将其地址和不相等的字符送到:BX 和 AL中。MOV CX,0C8HCLD REPE CMPSB JZ S
9、TOPDEC SIMOV AL,SIMOV BX,SISTOP:HLT 串扫描指令SCAS OPRDSCASBSCASW执行与CMPS指令相似的操作,只是这里的源操作数是AX或AL【例】 SCAS指令的举例。假设有一起始地址为BLOCK,长度为100个字节的存储区,现要对这一存储区进行测试,看其中是否有内容为00H的存储单元。 MOV DI,OFFSET BLOCK CLD MOV CX,100 XOR AL,AL REPNE SCASB JZ FOUND FOUND: 串装入指令LODS OPRDLODSBLODSW对字节: AL(DS:SI)对字: AX(DS:串送存指令STOS OPRD
10、STOSBSTOSW AL (ES:DI) 对 字: AX (ES:五、程序控制指令1. 转移指令 段内直接转移。 格式: JMP NEAR PTR TARGET JMP SHORT TARGET (IP)(IP)+16位位移量;(IP)(IP)+8位位移量。 段内间接寻址 JMP OPRD (IP) (EA)。说明:转向有效地址是一个通用寄存器或一个存储器单元的内容。 该指令是绝对转移。 若(DS)=0A000H,(BX)=0056H, TABLE=3200H, (SI)=0256H, (0A3256H)=1688H。执行 JMP SI ;JMP TABLEBX段间直接转移汇编格式1:JMP
11、 FAR PTR 转移地址标号执行的操作:(IP)转移地址标号的偏移地址(CS)转移地址标号的段地址功能:无条件转移到指定标号地址处往下执行。汇编格式2:JMP段地址值:偏移地址(IP)偏移地址值(CS)段地址值无条件转移到指定段的指定偏移地址处往下执行。P1 SEGMENTJMP FAR PTR NEXT1P1 ENDSP2 SEGMENT NEXT1:P2 ENDSJMP 6000H:1000H段间间接转移汇编格式:JMP DWORD PTR存储器寻址方式(IP)寻址到的存储单元的第一个字(CS)寻址到的存储单元的第二个字无条件转移到指定段的指定偏移地址处。【例】 如果TABLE是数据段中
12、定义的一变量,偏移地址为0010H,(DS)=1000H,(10015H)=12H,(10016H)=34H,(10017H)=56H,(10018H)=78H,有指令JMP DWORD PTR TABLEBX执行时若(BX)=0005H,则执行后,(IP)=3412H,(CS)=7856H,即程序转移到7856H:3412H处。(2) 条件转移指令。条件转移指令有16条,转移的条件是依据对除AF之外的五个状态标志位的判断。 可对一个标志位进行判断,也可对两个甚至三个标志位进行判断。在内存中存放了100个8位的有符号数,其首地址位Table,试统计其中的正、负数以及零的个数,并分别放到相应的存储单元Plus, Minus, Zero中。Start: MOV AL,0MOV Plus,ALMOV Minus,ALMOV Zero,ALLEA SI,TABLEMOV CX,100CHE: LODSBOR AL, ALJS X1 JZ X2INC PLUSJMP NEXTX1: INC MINUSJMP NEXTX2: INC ZERONEXT: LOOP CHECK2. 循环控制指令控制程序在以当前IP
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1