微机原理 8086指令系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2019/8/31
1
微机原理 自动化科学与电气工程学院
第3章 8086/8088微处理器及其系统
92种基本指令,全部公开,
六个功能组(六大类)
一、 数据传送(Data transfer) 二、 算术运算(Arithmetic) 三、 逻辑运算和移位指令(Logic & Shift) 四、 串操作(String manipulation) 五、 控制转移(Control Transfer) 六、 处理器控制(Processor Control)
思考
– 将两个非压缩BCD码(高位在BL,低位在AL)合并成压缩BCD码送 AL。
MOV CL, 4
;将计数值送CL
SHL BL, CL ;将高位移到BL的高4位
AND AL, 0FH ;清零AL高4位
OR AL, BL ;合并AL和BL形成压缩BCD码
– 分析下面的程序段所实现的功能(可以用别的指令实现吗) SHL AL,1 ; 将AL中数左移1位,得2X MOV BL,AL ; 2X保存在BL中 MOV CL,2 ; 移位次数置入CL中 SHL AL,CL ; 2X左移2位,得8X ADD AL,BL ; 2X加上8X,所以AL中为10X
14
微机原理 自动化科学与电气工程学院
5. 8086/8088指令系统
四、串操作(String manipulation)
– LODS(Load from string)读串指令
LODS ;(字节)(AL) ((DS):(SI)), (SI) (SI) ±1 ;(字) (AX) ((DS):(SI)),(SI) (SI)±2
4000H:1001H F2
4000H:1002H 1C 4000H:1002H
DI 4000H:1003H 89 4000H:1003H
4000H:1004H 76 4000H:1004H 6B 4000H:1005H X 4000H:1006H
STD; 设DF=1 MOV CX,5 ;串操作次数
3.逻辑操作按位进行
2019/8/31
4
微机原理 自动化科学与电气工程学院
5. 8086/8088指令系统
三、逻辑运算和移位指令(Logic & Shift)
– 逻辑运算指令应用
• AND指令通常用于将操作数的某些位清0 AND AL,0FCH ;AL的低2位清0,其余保持不变 • TEST指令常用于“取出”操作数的某一位来进行判断 TEST AL,20H ;取AL的D5位
MOV单指令不能完成存储单元之间的数据传送; MOVS指令就是为解决 存储单元之间数据传送而设置的 MOVSB/MOVSW隐含了源、目的操作数
2019/8/31
12
微机原理 自动化科学与电气工程学院
5. 8086/8088指令系统
思考:重叠串操作
SI 4000H:1000H 34 4000H:1000H 34H,0F2H,1CH,89H,76H,6BH
– CMPSB / SCASB
Compare string ‘aaA’ with ‘aaa’, check flag bit CF Search character ‘a’ with ‘china’, check flag bit CF
2019/8/31
16
微机原理 自动化科学与电气工程学院
第3章 8086/8088微处理器及其系统
CMPSB
; (字节) (SI) (SI)±1,(DI)←(DI) ±1
CMPSW
; (字)(SI) (SI)±2,(DI) (DI)±2
与前缀REPZ连用
两数相减,只影响标志,不影响操作数,其它操作规定与MOVS同。
– SCAS (Scan string ) 串扫描、搜索指令
SCAS
SCASB
5. 8086/8088指令系统
四、串操作(String manipulation)
– PRACTICE AND PROGRESS
– STOSB / LODSB
Store ‘a’ to 15 memory cells, with start address ES:DI 3000H:1230H, then load character again.
; DEST∧SRC→DEST ; DEST ∨ SRC → DEST ; DEST ⊕ SRC → DEST
; DEST → DEST ; DEST ∧ SRC
1.两个操作数要满足类型组合:D (R或M), S(R/M/N)
2.TEST不改变目标操作数内容, 其后常紧跟条件转移指令以 实现判断分支, AND将运算结果送目标操作数
LODS B ;(字节)(AL) ((DS):(SI)),(SI) (SI) ±1 LODS W ;(字) (AX) ((DS):(SI)),(SI) (SI)±2
– STOS(Store into string) 存入串指令
STOS ;(字节) ((ES):(DI)) (AL) , (DI) (DI) ±1 ;(字) ((ES):(DI)) (AX) , (DI) (DI) ±2
8086/8088指令一览表
– 控制转移
指令类型
无条件转移


控 制
转 移

循环控制

过程调用
中断指令
助记符 JMP
JE/JZ, JNE/JNZ, JS, JNS, JO, JNO JP, JNP, JC, JNC, JCXZ JA/JNBE, JAE/JNB, JB/JNAE JBE/JNA JG/JNLE, JGE/JNL, JL/JNGE, JLE/JNG
CX
在同一个段内实现字符串传送时,应该设置DS和ES为同一数值,仍由SI和DI 分别指出源串操作数和目的操作数的偏移地址。
串操作指令是唯一的一组源操作数和目的操作数都在存储单元的指令。
方向标志DF决定指针的修改方向— DF =0,指针加;DF =1,指针减。串元素的类型决 定修改量——字节串,指针加减1;字串,指针加/减2。 加有重复前缀时,固定使用CX计录并修改重复次数,再根据CX值及标志位ZF判断是否 重复进行串操作。前缀本身不影响任何标志位。
2019/8/31
5
微机原理 自动化科学与电气工程学院
5. 8086/8088指令系统
三、逻辑运算和移位指令(Logic & Shift)
– 移位指令
格式: SAL/SAR/SHL/SHR OPRD,1 SAL/SAR/SHL/SHR OPRD,CL
2019/8/31
6
;移1位 ;移CL次
微机原理 自动化科学与电气工程学院
2019/8/31
11
微机原理 自动化科学与电气工程学院
5. 8086/8088指令系统
四、串操作(String manipulation)
– 串传送 MOVS(Move string) MOVS D,S ;((ES):(DI)←((DS):(SI)) MOVSB (字节) ;(SI)←(SI)±1,(DI)←(DI)±1, MOVSW (字) ;(SI)←(SI)±2,(DI)←(DI)±2, REP CLD, DF=0, SI/DI增加; STD, DF=1, SI/DI递减
–串操作重复前缀加在串操作指令之前,根据不同条件判 断是否重复执行串操作。可以实现对整个串的同一种操作。
2019/8/31
10
微机原理 自动化科学与电气工程学院
5. 8086/8088指令系统
四、串操作(String manipulation)
ES:DI——固定的目标
DF
串指针,不允许段超越
DS:SI——默认的源 串指针,可段超越
• ROL、ROR、RCL、RCR的使用方法相同,对标志位的影响相同: 移出位给CF;当移位次数为1时,影响OF。
• SHR/SAR每移1位,可视为分别将无符号数和带符号数除以2;使 用SHL/SAL每移1位,可视为将数值乘以2。
2019/8/31
8
微机原理 自动化科学与电气工程学院
5. 8086/8088指令系统
2019/8/31
3
微机原理 自动化科学与电气工程学院
5. 8086/8088指令系统
三、逻辑运算和移位指令(Logic & Shift)
– 逻辑运算指令格式 – 逻辑与 AND D, S – 逻辑或 OR D, S – 异 或 XOR D, S – 逻辑非 NOT D
– TEST TEST D,S
LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ
CALL, RET INT, INTO, IRET
处理机控制
CLC, STC, CMC,CLD, STD, CLI, STI NOP, HLT, WAIT, ESC, LOCK
第3章 8086/8088微处理器及其系统
• 1. 8086/8088微处理器结构
– 微处理器功能结构 – 寄存器结构(编程结构)
• 2. 8086/8088存储器组织 • 3. 8086/8088工作方式
– 时序和引脚信号 – 最大和最小模式
• 4. 8086/8088寻址方式 • 5. 8086/8088指令系统
三、逻辑运算和移位指令(Logic & Shift) –小结
• AND、TEST、OR、XOR指令对标志位的影响:固定使CF=OF=0; 根据运算结果改变SF、ZF、PF。
• NOT指令形式上只有一个操作数;不影响任何标志位。
• SAL、SAR、SHL、SHR指令的使用方法相同,对标志位的影响 也相同:移出位给CF;根据结果改变SF、ZF、PF;当移位次数为1 时,影响OF。
STOSB ;(字节) ((ES):(DI)) (AL) , (DI) (DI) ±1 STOSW ;(字) ((ES):(DI)) (AX) , (DI) (DI) ±2
与REP联用时,(CX)←缓冲区长度。用来建立一串相同的值,初始清零。
2019/8/31
15
微机原理 自动化科学与电气工程学院
MOV SI, 1005 MOV DI, 1007 REP MOVSB
X
2019/8/31
13
微机原理 自动化科学与电气工程学院
5. 8086/8088指令系统
四、串操作(String manipulation)
– CMPS(Compare string ) 串比较指令
CMPS D,S ;((ES):(DI) - (DS):(SI)),结果不存,置标志
;(字节)(AL) - ((ES):(DI)),(DI)(DI)±1
SCASW
;(字)(AX)- ((ES):(DI)),(DI) (DI)±2
与前缀REPNE连用
(DI)—字符串起始地址,(AL)或(AX) — 关键字
两数相减, 只影响标志, 不影响操作数, 其它特性同MOVS
2019/8/31
• OR指令通常用于将操作数的某些位置1
OR AL,80H
;AL的D7位置1, 其余位保持不变
• XOR指令通常用于将操作数的某些位取反
XOR AL,0FH ;AL的低4位取反,高4位保持不变
• NOT指令按位取反
MOV BX,8A51H ; (1000 1010 0101 0001)
T BX
; BX=75AEH (0111 0101 1010 1110)
2019/8/31
9
微机原理 自动化科学与电气工程学院
5. 8086/8088指令系统
四、串操作(String manipulation)
–串内存中一段地址连续的字节或字存储单元。通常用于 存放同一类数据。数据源:源串;数据结果:目的串。
–串操作对串中各项进行操作(传送、比较、检索、装入、 存储),也叫数据块操作。串操作指令是86/88实现内存 之间数据传送的一组指令。
80868088指令系统助记符助记符转移条件转移条件jajnbecfzf0高于不低于等于jaejnbjnccf0高于或等于不低于无进位jbjnaejccf1低于低于不高于等于有进位以两个无符号数比较的结果作为转移条件自动化科学与电气工程学院微机原理20154722jbejnacfzf1低于或等于不高于助记符转移条件jgjnlesfofzf0大于不小于等于jgejnlsfof0大于或等于不小于jljngesfof1小于不大于等于jlejngsfofzf1小于或等于不大于以两个带符号数比较的结果作为转移条件5
5. 8086/8088指令系统
三、逻辑运算和移位指令(Logic & Shift)
– 循环移位指令
2019/8/31
格式: ROL/ROR/RCL/RCR 操作数,1;移1位 ROL/ROR/RCL/RCR 操作数,CL;移位CL次
7
微机原理 自动化科学与电气工程学院
5. 8086/8088指令系统
2019/8/31
2
微机原理 自动化科学与电气工程学院
第3章 8086/8088微处理器及其系统
8086/8088指令一览表
– 逻辑移位/串处理
指令类型
逻 逻辑运算
辑 移
移位运算
位 循环移位

串操作
处 理
重复控制
助记符
AND, TEST, OR, XOR, NOT SHL, SAL, SHR, SAR ROL, ROR, RCL, RCR MOVS, CMPS, SCAS, LODS,STOS REP, REPE/REPZ, REPNE/REPNZ
相关文档
最新文档