微机原理与接口技术复习资料内容摘要:
DAS 对 OF无定义 ,但影响其余标志位。 DAS 指令要求跟在减法指令之后。 乘法指令 进行乘法时: 8位 *8 位→ 16位乘积 16 位 *16 位→ 32 位乘积 (1) 无符号数的乘法指令 MUL(MEM/REG) 格式: MUL src 操作:字节操作数 (AX)←(AL) (src) 字操作数 (DX, AX)←(AX) (src) 指令例子: MUL BL ; (AL) (BL),乘积在 AX中 MUL CX ; (AX) (CX),乘积在 DX,AX 中 MUL BYTE PTR[BX] ( 2)有符号数乘法指令 IMUL 格式与 MUL 指令类似,只是要求两操作数均为 有符号数。 指令例子: IMUL BL ; (AX)← (AL)(BL) IMUL WORD PTR[SI]; (DX,AX)← (AX)([SI+1][SI]) 注意: MUL/IMUL 指令中 ● AL(AX)为隐含的乘数寄存器; ● AX(DX,AX)为隐含的乘积寄存器; ● SRC 不能为立即数; ● 除 CF 和 OF外,对其它标志位无定义。 除法指令 进行除法时: 16 位 /8 位→ 8 位商 32 位 /16 位→ 16 位商 对被除数、商及余数存放有如下规定: 被除数 商 余数 字节除法 AX AL AH 字除法 DX:AX AX DX ( 1)无符号数除法指令 DIV 格式: DIV src 操作:字节操作 (AL)←(AX) / (SRC) 的商 (AH)←(AX) / (SRC) 的余数 字操作 (AX) ←(DX, AX) / (SRC) 的商 (DX) ←(DX, AX) / (SRC) 的余数 指令例子: DIV CL DIV WORD PTR[BX] ( 2)有符号数除法指令 IDIV 格式: IDIV src 操作与 DIV 类似。 商及余数均为有符号数 ,且余数符号总是与被除数符号相同。 注意 : 对于 DIV/IDIV 指令 AX(DX,AX)为隐含的被除数寄存器。 AL(AX)为隐含的商寄存器。 AH(DX)为隐含的余数寄存器。 src 不能为立即数。 对所有条件标志位均无定 关于除法操作中的字长扩展问题 •除 法运算要求被除数字长是除数字长的两倍 ,若不满足则需 对被除数进行扩展 ,否则产生错误。 •对于无符号数除法扩展,只需将 AH 或 DX 清零即可。 •对有符号数而言 ,则是符号位的扩展。 可使用前面介绍过的符号扩展指令 CBW 和 CWD 三、逻辑运算和移位指令 逻辑运算指令 ( 1)逻辑与 AND 对两个操作数进行按位逻辑 “ 与 ” 操作。 格式: AND dest, src 用途:保留操作数的某几位,清零其他位。 例 1:保留 AL中低 4 位,高 4 位清 0。 AND AL,0FH ( 2)逻辑或 OR 对两个操作数进行按位逻辑 ”或 ”操作。 格式: OR dest, src 用途:对操作数的某几位置 1;对两操作数进行组合。 例 1:把 AL 中的非压缩 BCD 码变成相应十进制数的 ASCII 码。 OR AL, 30H ( 3)逻辑非 NOT 对操作数进行按位逻辑 ”非 ”操作。 格式: NOT mem/reg 例: NOT CX NOT BYTE PTR[DI] ( 4)逻辑异或 XOR 对两个操作数按位进行 ” 异或 ” 操作。 格式: XOR dest, src 用途:对 reg 清零 (自身异或 ) 把 reg/mem 的某几位变反 (与 ’1’ 异或 ) 例 1:把 AX 寄 存器清零。 ① MOV AX,0 ② XOR AX,AX ③ AND AX,0 ④ SUB AX,AX ( 5)测试指令 TEST 操作与 AND 指令类似 ,但不将 ”与 ”的结果送回 ,只影响标志位。 TEST 指令常用于位测试 ,与条件转移指令一起用。 例:测试 AL 的内容是否为负数。 TEST AL,80H ;检查 AL 中 D7=1。 JNZ MINUS ;是 1(负数 ),转 MINUS … … ;否则为正数 移位指令 (1)非循环移位指令 (重点 ) 算术左移指令 SAL(Shift Arithmetic Left) 算术右移指令 SAR(Shift Arithmetic Right) 逻辑左移指令 SHL(Shift Left) 逻辑右移指令 SHR(Shift Right) 这 4 条指令的格式相同 ,以 SAL 为例: CL。 移位位数大于 1 时 SAL mem/reg 1。 移位位数等于 1 时 算术移位 ——把操作数看做有符号数; 逻辑移位 ——把操作数看做无符号数。 移位位数放在 CL 寄存器中,如果只移 1 位 ,也 可以直接写在指令中。 例如: MOV CL,4 SHR AL,CL ; AL 中的内容右移 4 位 影响 C,P,S,Z,O 标志。 结果未溢出时: 左移 1 位≡操作数 *2 右移 1 位≡操作数 /2 例:把 AL 中的数 x 乘 10 因为 10=8+2=23+21,所以可用移位实现乘 10 操作。 程序如下: MOV CL,3 SAL AL,1。 2x MOV AH,AL SAL AL,1。 4x SAL AL,1。 8x ADD AL,AH。 8x+2x = 10x 移位指令的题目见综合练习题 P6 五, 4 题; P21 五, 1 题 四、控制转移指令 转移指令 ( 1)无条件转移指令 JMP 格式: JMP label 本指令无条件转移到指定的目标地址 ,以执行从该地址开始的程序段。 ( 2)条件转移指令(补充内容) (重点 ) ① 根据单个标志位设置的条件转移指令 JB/JC ;低于 ,或 CF=1,则转移 JNB/JNC/JAE ;高于或等于 ,或 CF=0,则转移 JP/JPE ;奇偶标志 PF=1(偶 ),则转移 JNP/JPO ;奇偶标志 PF=0(奇 ),则转移 JZ/JE ;结果为零 (ZF=1),则转移 JNZ/JNE ;结果不为零 (ZF=0),则转移 JS ; SF=1,则转移 JNS ; SF=0,则转移 JO ; OF=1,则转移 JNO ; OF=0,则转移 ②根据组合条件设置的条件转移指令 这类指令主要用来判断两个数的大小。 判断无符号数的大小 JA 高于则转移 条件为 : CF=0∧ ZF=0,即 A> B JNA/JBE 低于 或等于则转移 条件为 : CF=1∨ ZF=1,即 A≢ B JB AB 则转移 JNB A≣ B 则转移 ★判断有符号数的大小 JG ;大于则转移 (A> B) 条件为 : (SF⊕ OF=0)∧ ZF=0 JGE;大于或等于则转移 (A≣ B) 条件为 : (SF⊕ OF=0)∨ ZF=1JLE;小于或等于则转移 (A≢ B) 条件为 : (SF⊕ OF=1)∨ ZF=1 JL;小于则转移 (A< B= 条件为 : (SF⊕ OF=1)∧ ZF=0 循环控制指令 用在循环程序中以确定是否要继续循环。 循环次数通常置于 CX 中。 转移的目标应在距离本指令 128~ +127 的范围之内。 循环控制指令不影响标志位。 (1)LOOP 格式: LOOP label 操作: (CX)1→ CX; 若 (CX)≠ 0,则转至 label 处执行 ; 否则退出循环 ,执行 LOOP 后面的指令。 LOOP 指令与下面的指令段等价: DEC CX JNZ label 过程调用指令 ( 1)调用指令 CALL 一般格式: CALL sub。 sub 为子程序的入口 中断指令 (1)INT n 执行类型 n 的中断服务程序, N=0~ 255 在 8086微机系统的存储器单元 0000H: 0054H 开始依次存放 0CDH,01EH, 00H 和 051H 四个字节内容,知道向量对应的中断号,该向量对应的中断服务程序的段基址与偏移地址分别 五、处理器控制指令 标志位操作 ( 1) CF 设置指令 CLC 0→ CF STC 1→ CF CMC CF 变反 ( 2) DF 设置指令 CLD 0→ DF (串操作的指针移动方向从低到高 ) STD 1→ DF (串操作的指针移动方向从高到低 ) ( 3) IF 设置指令 CLI 0→ IF (禁止 INTR 中断 ) STI 1→ IF (开放 INTR 中断 ) HLT( halt) 执行 HLT 指令后, CPU 进入暂停状态。 习题 2 4 5 第 六 章 8086 汇编语言程序设计 第一节 伪指令 (重点 ) CPU 指令与伪指令之间的区别: (1)CPU 指令是给 CPU 的命令,在运行时由 CPU 执行,每条指令对应 CPU 的一种特定的操作。 而伪指令是给汇编程序的命令,在汇编过程中由汇编程序进行处理。 (2)汇编以后,每 条 CPU 指令产生一一对应的目标代码;而伪指令则不产生与之相应的目标代码。 数据定义伪指令 ( 1) 数据定义伪指令的一般格式为: [变量名 ] 伪指令 操作数 [,操作数 …] DB 用来定义字节( BYTE) DW 用来定义字( WORD) DD 用来定义双字( DWORD) ( 2)操作数的类型可以是: ①常数或常数表达式 例如: DATA_BYTE DB 10,5,10H DATA_WORD DW 100H,100,4 DATA_DW DD 2*30,0FFFBH 可以为字符串(定义字符串最好使用 DB) 例如: char1 DB „AB‟ 可以为变量 可以为。 号操作符 例如: X DB 5,。 , 6。 号只是为了给变量保留相应的存储单元,而不赋予变量某个确定的初值。 重复次数: N DUP(初值 [,初值 …] ) 例如: ZERO DB 2 DUP( 3, 5) XYZ DB 2 DUP( 0, 2 DUP( 1, 3), 5) BUF1 DB 1, 1,‘ AB’ DB 2 DUP(3, 1) BUF2 DB 2 DUP(。 ), 10 在伪操作的操作数字段中若使用 $,则表示的是地址计数器的当前值。 补充内容: ( 1) 类型 PTR 地址表达式 例如: MOV BYTE PTR [BX], 12H INC BYTE PTR [BX] 注意: 单操作数指令,当操作数为基址、变址、基 +变的时候必须定义 符号定义伪指令 (1)EQU 格式:名字 EQU 表达式 EQU 伪指令将表达式的值赋予一个名字,以后可用这个名字来代替上述表达式。 例: CONSTANT EQU 100 NEW_PORT EQU PORT_VAL+1 (2) =(等号) 与 EQU 类似 ,但允许重新定义 例: ┇ EMP=7 ;值为 7 ┇ EMP=EMP+1 ;值为 8 (3)LABEL LABEL 伪指令的用途是定义标号或变量的类型 格式:名字 LABEL 类型 变量的类型可以是 BYTE, WORD, DWORD。 标号的类型可以是 NEAR 或 FAR 段定义伪指令 与段有关的伪指令有: SEGMENT、 ENDS、 ASSUME、 ORG ( 1)段定义伪指令的格式如下: 段名 SEGMENT [定位类型 ] [组合类型 ] [’类别 ’] ┇ 段名 ENDS SEGMENT 和 ENDS 这两个伪指令总是成对出现,二者前面的段名一致。 二者之间的删节部分,。微机原理与接口技术复习资料
本资源仅提供20页预览,下载后可查看全文
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。
相关推荐
微型计算机原理与接口技术第三版课后题答案
B、 IP C、 FR D、 AX 8086 和 8088 分别 设置了( A )字节的指令队列。 A、6,4 B、 4,6 C、4,4 D、 6,6 2 8086/8088 能直接寻址多少 MB 的存储空间和多少个 I/O 端口( B ) A、 1, 1K B、 1, 64K C、 64K, 64K D、 1, 1M 在 8086/8088 用于多 CPU 系统中, CPU
微机原理及接口技术实验讲义
10 则在屏幕上显示字符“ M” 2. 8253 计数器应用实验( 1) 设定 8253 的 2通道工作方式为方式 0,用于事件计数,当计数值为 5 时结束,发出中断请求信号,显示“ M”。 其实验线路如图 44 所示。 图 44 8253 实验( 1)线路 参考流程图及程序如图 45 所示。 地址 (H) 助记符 注释 2020 IN AL, 21 ;初始化 8259 2020 AND AL,
微型计算机原理与接口技术(课后答案)
. (3)先取变量 STRING的偏移地址送寄存器 SI,之后送 SI的内容与 DI的内容相加并将结果送 ,(SI)=0017H。 (DI)=(DI)+0017H. 试编写求两个无符号双子长数之和的程序 . 两数分别在 MEM1和 MEM2单元中 ,和放在 SUM单元 . 解 : DSEG SEGMENT MEM1 DW 1122H,3344H MEM2 DW 5566H,7788H SUM