微机原理与接口技术08第3章 寻址方式和指令系统33 习题3Word格式.docx
《微机原理与接口技术08第3章 寻址方式和指令系统33 习题3Word格式.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术08第3章 寻址方式和指令系统33 习题3Word格式.docx(30页珍藏版)》请在冰豆网上搜索。
![微机原理与接口技术08第3章 寻址方式和指令系统33 习题3Word格式.docx](https://file1.bdocx.com/fileroot1/2022-10/20/719a7e7e-d87e-4fa4-81cd-82562a9b3a97/719a7e7e-d87e-4fa4-81cd-82562a9b3a971.gif)
3.程序控制指令的基本功能和格式。
难点:
逻辑运算和移位指令的基本功能和格式。
要求掌握知识点和分析方法
1.逻辑运算和移位指令的格式、功能及应用方法;
2.串操作指令的格式、功能及应用方法;
3.程序控制指令的格式、功能及应用方法。
启发与提问
1.逻辑移位和算术移位指令的区别?
教学手段
多媒体+板书
作业布置
思考题:
1.远跳转和近跳转的区别?
3.2,3.5
3.9,3.11
3.12,3.14
主要
参考资料
备注
注:
教案按授课次数填写,每次授课均应填写一份。
重复班授课可不另填写教案。
长安大学讲稿(第八讲)
讲授内容
三、逻辑运算和移位类
1.逻辑运算
逻辑运算指令对操作数的要求大多与MOV指令相同。
逻辑运算是按位操作的,它包括AND(与)、OR(或)、NOT(非)、XOR(异或)和TEST(测试)指令。
除“非”运算指令外,其余指令的执行都会使标志位OF=CF=0,AF位无定义,SF、ZF和PF根据运算结果设置。
“与”运算指令
格式:
ANDOPRD1,OPRD2
操作:
两操作数相“与”,结果送目标地址。
【例】要屏蔽AL中的高4位。
ANDAL,00001111B
【例】ANDAL,AL
此指令执行前后,(AL)无变化,但执行后使标志位发生了变化,即CF=0,OF=0。
“或”运算指令
OROPRD1,OPRD2
两操作数相“或”,结果送目标地址
【例】(AL)=0FH,ORAL,10000000B
(AL)=8FH
【例】ORAL,AL
指令执行前后,(AL)不变,但执行后标志位发生了变化,即CF=0,OF=0。
“非”运算指令
NOTOPRD
操作数按位取反再送回原地址
指令中的操作数不能是立即数
指令的执行对标志位无影响
例:
NOTBYTEPTR[BX]
“异或”运算指令
XOROPRD1,OPRD2
两操作数相“异或”,结果送目标地址
两操作数自身相异或,结果
XORAX,AX
“测试”指令
TESTOPRD1,OPRD2
执行“与”运算,但运算的结果不送回目标地址。
应用:
常用于测试某些位的状态
“测试”指令例
从地址为38F0H的端口中读入一个字节数,如果该数的bit1位为1,则可从38FEH端口将DATA为首地址的一个字输出,否则继续读写端口数据。
编写相应的程序段。
LEASI,DATA
MOVDX,38F0H
WATT:
INAL,DX
TESTAL,02H
JZWATT;
ZF=1转移
MOVDX,38FEH
MOVAX,[SI]
OUTDX,AX
2.移位指令
(1)逻辑/算术左移指令。
SHL/SALDST,CNT
指令按照CNT指定的移位次数对目的操作数进行左移位,移位结果送DST,最后一次移出的位送CF中。
移动一位后,若CF与最高不相等,则OF=1;
否则OF=0
MOVAL,41H
SHL(SAL)AL,1
执行结果(AL)=82H,CF=0,OF=1
【例】将(AX)乘以10。
十进制数10的二进制形式为1010,即权为2和权为8的位为1,故采用2×
(AX)+8×
(AX),结果为10×
(AX),程序段如下:
SHLAX,1
MOVBX,AX
ADDAX,BX
逻辑右移
SHRDST,CNT
移动一位后,若次高位与最高位不相等,则OF=1;
算术右移(有符号数的右移)
SAROPRD,I
SAROPRD,CL
循环移位指令
不带进位位的循环移位
带进位位的循环移位
循环移位指令的格式、对操作数的要求与非循环移位指令相同
循环移位指令的应用
例如:
有一个4字节数存放在DX和AX中,(DX)=0123H,(AX)=0456H,要求该数的4个字节一起左移一位。
执行SALAX,1
RCLDX,1
注意:
将AX的D15移到CF,再将CF移到DX的D0,DX的D15最后移到CF中。
用于对某些位状态的测试;
测试BL寄存器的第三位状态,并保持原内容不变。
MOVCL,04H
ROLBL,CL
JNZZERO
RORBL,CL
……
ZERO:
RORBL,CL
例:
将1000H开始存放的四个压缩BCD码转换为ASCII码存放在3000H开始的单元中去。
MOVSI,1000H
MOVDI,3000H
MOVCX,4
BBB:
MOVAL,[SI]
MOVBL,AL
ANDAL,0FH
ORAL,30H
MOV[DI],AL
INCDI
MOVAL,BL
PUSHCX
MOVCL,4
SHRAL,CL
INCSI
POPCX
DECCX
JNZBBB
HLT
四、串操作指令
针对数据块或字符串的操作;
可实现存储器到存储器的数据传送;
待操作的数据串称为源串,目标地址称为目标串。
串操作指令的特点
源串一般存放在数据段,偏移地址由SI指定。
允许段重设;
目标串必须在附加段,偏移地址由DI指定;
指令自动修改地址指针,修改方向由DF决定。
DF=0增地址方向;
DF=1减地址方向;
数据块长度值由CX指定
可增加自动重复前缀以实现自动修改CX内容。
重复前缀
REP无条件重复
REPE相等重复
REPZ为零重复
REPNE不相等重复
REPNZ不为零重复
串传送指令
MOVSOPRD1,OPRD2
MOVSB
MOVSW
串传送指令常与无条件重复前缀连用
对比用MOV指令和MOVS指令实现将200个字节数据从内存的一个区域送到另一个区域的程序段。
用串传送指令实现200个字节数据的传送:
LEASI,MEM1
LEADI,MEM2
MOVCX,200
CLD
REPMOVSB
串比较指令
CMPSOPRD1,OPRD2
CMPSB
CMPSW
串比较指令常与条件重复前缀连用,指令的执行不改变操作数,仅影响标志位。
测试200个字节数据是否传送正确,如果不正确,找出第一个不相等的字符,并将其地址和不相等的字符送到:
BX和AL中。
MOVCX,0C8H
CLD
REPECMPSB
JZSTOP
DECSI
MOVAL,[SI]
MOVBX,SI
STOP:
HLT
串扫描指令
SCASOPRD
SCASB
SCASW
执行与CMPS指令相似的操作,只是这里的源操作数是AX或AL
【例】SCAS指令的举例。
假设有一起始地址为BLOCK,长度为100个字节的存储区,现要对这一存储区进行测试,看其中是否有内容为00H的存储单元。
MOVDI,OFFSETBLOCK
CLD
MOVCX,100
XORAL,AL
REPNESCASB
JZFOUND
FOUND:
串装入指令
LODSOPRD
LODSB
LODSW
对字节:
AL←([DS:
SI])
对字:
AX←([DS:
串送存指令
STOSOPRD
STOSB
STOSW
AL([ES:
DI])
对字:
AX([ES:
五、程序控制指令
1.转移指令
①段内直接转移。
格式:
JMPNEARPTRTARGET
JMPSHORTTARGET
(IP)←(IP)+16位位移量;
(IP)←(IP)+8位位移量。
②段内间接寻址
JMPOPRD
(IP)←(EA)。
说明:
转向有效地址是一个通用寄存器或一个存储器单元的内容。
该指令是绝对转移。
若(DS)=0A000H,(BX)=0056H,TABLE=3200H,(SI)=0256H,(0A3256H)=1688H。
执行JMPSI;
JMPTABLE[BX]
③段间直接转移
汇编格式1:
JMPFARPTR转移地址标号
执行的操作:
(IP)←转移地址标号的偏移地址
(CS)←转移地址标号的段地址
功能:
无条件转移到指定标号地址处往下执行。
汇编格式2:
JMP段地址值:
偏移地址
(IP)←偏移地址值
(CS)←段地址值
无条件转移到指定段的指定偏移地址处往下执行。
P1SEGMENT
JMPFARPTRNEXT1
P1ENDS
P2SEGMENT
NEXT1:
P2ENDS
JMP6000H:
1000H
④段间间接转移
汇编格式:
JMPDWORDPTR存储器寻址方式
(IP)←寻址到的存储单元的第一个字
(CS)←寻址到的存储单元的第二个字
无条件转移到指定段的指定偏移地址处。
【例】如果TABLE是数据段中定义的一变量,偏移地址为0010H,(DS)=1000H,(10015H)=12H,(10016H)=34H,(10017H)=56H,(10018H)=78H,有指令
JMPDWORDPTRTABLE[BX]
执行时若(BX)=0005H,则执行后,(IP)=3412H,(CS)=7856H,即程序转移到7856H:
3412H处。
(2)条件转移指令。
条件转移指令有16条,转移的条件是依据对除AF之外的五个状态标志位的判断。
可对一个标志位进行判断,也可对两个甚至三个标志位进行判断。
在内存中存放了100个8位的有符号数,其首地址位Table,
试统计其中的正、负数以及零的个数,并分别放到相应的存储单元Plus,Minus,Zero中。
Start:
MOVAL,0
MOVPlus,AL
MOVMinus,AL
MOVZero,AL
LEASI,TABLE
MOVCX,100
CHE:
LODSBORAL,AL
JSX1
JZX2
INCPLUS
JMPNEXT
X1:
INCMINUSJMPNEXT
X2:
INCZERO
NEXT:
LOOPCHECK
2.循环控制指令
控制程序在以当前IP