第3章 8086指令系统(2)

合集下载

第3章 8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

第3章  8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

直接寻址方式可以利用变量名的偏移地址属性来 描述操作数的偏移地址(可直接用变量名,或将 变量名置于方括号[ ]中),段寄存器默认为DS。 如果实际使用的段寄存器不是DS,则必须用段 前缀明确指出。
【例3.7】设数据段内有如下变量定义语句
VAR DB 76H,5CH,0A3H,08H
分析以下指令的执行结果。
3.1 指令系统基本概念
指令是给计算机下达的一个简单操作任务,CPU 所能执行的所有指令构成了一个计算机的指令系 统(也称指令集)。
汇编语言指令是对机器指令的符号化表示,采用 助记符来表示指令的操作功能和操作对象。
指令通常可以分为以下几类:
⑴ 数据传送类指令。 ⑵ 算术运算类指令。
⑸ 程序控制类指令。 ⑹ 处理器控制类指令。
【例3.3】要求将数据68传送给AL寄存器,写出相应的传 送指令。 分析:由于AL寄存器接收数据,所以目的操作数为AL, 采用寄存器寻址方式,而源操作数为常数68,采用立即寻 址方式
MOV AL,68 ;AL←68
【例3.4】设被加数存于寄存器DX中,加数为512,写出相 应的加法指令。 分析:因为被加数由寄存器DX提供,所以DX为目的操作 数,采用寄存器寻址方式,而加数为常数512,采用立即 寻址方式
操作数。
2. ADD指令
指令格式:ADD DST,SRC 指令功能:DST←(DST)+(SRC) 。执行加法运算。 操作数特点:两个操作数。被加数DST为目的操作数,加
数SRC为源操作数。
3. NOT指令
指令格式:NOT OPR 指令功能:OPR←(OPR) 。执行逻辑非运算。 操作数特点:一个操作数。OPR既是目的操作数,也是源
段地址由段寄存器提供,用段前缀(DS:,ES:, CS:或SS:)来指明;偏移地址(亦称有效地址) 则有多种表示形式,由此形成了不同的存储器寻 址方式。

微机原理和接口技术(第三版)课本习题答案解析

微机原理和接口技术(第三版)课本习题答案解析

第二章 8086 体系结构与80x86CPU1.8086CPU 由哪两部份构成?它们的主要功能是什么?答:8086CPU 由两部份组成:指令执行部件<EU,Execution Unit>和总线接口部件<BIU,Bus Interface Unit>。

指令执行部件〔EU 主要由算术逻辑运算单元<ALU>、标志寄存器F R、通用寄存器组和E U 控制器等4个部件组成,其主要功能是执行指令。

总线接口部件<BIU>主要由地址加法器、专用寄存器组、指令队列和总线控制电路等4个部件组成,其主要功能是形成访问存储器的物理地址、访问存储器并取指令暂存到指令队列中等待执行,访问存储器或者I/O 端口读取操作数参加E U 运算或者存放运算结果等。

2.8086CPU 预取指令队列有什么好处? 8086CPU 内部的并行操作体现在哪里?答: 8086CPU 的预取指令队列由6个字节组成,按照8086CPU 的设计要求, 指令执行部件〔EU 在执行指令时,不是直接通过访问存储器取指令,而是从指令队列中取得指令代码,并分析执行它。

从速度上看,该指令队列是在C PU 内部,EU 从指令队列中获得指令的速度会远远超过直接从内存中读取指令。

8086CPU 内部的并行操作体现在指令执行的同时,待执行的指令也同时从内存中读取,并送到指令队列。

5.简述8086 系统中物理地址的形成过程。

8086 系统中的物理地址最多有多少个?逻辑地址呢?答: 8086 系统中的物理地址是由20 根地址总线形成的。

8086 系统采用分段并附以地址偏移量办法形成20 位的物理地址。

采用分段结构的存储器中,任何一个逻辑地址都由段基址和偏移地址两部份构成,都是16 位二进制数。

通过一个20 位的地址加法器将这两个地址相加形成物理地址。

具体做法是16 位的段基址左移4位<相当于在段基址最低位后添4个"0">,然后与偏移地址相加获得物理地址。

2_第3章 8086指令系统_加减运算指令比较指令52

2_第3章 8086指令系统_加减运算指令比较指令52
4
3.4.2 算术运算指令
算术运算指令涉及两种类型数据,即无符号数和有符号数 对加法指令和减法指令而言,无符号和有符号数可采用同
一套指令,其先决条件有两个: 一是参加的操作数必须同为无符号数或同为有符号数 二是要采用不同标志位来检查无符号数和有符号数的 运算结果是否溢出
而乘除运算指令则需要区分无符号数和有符号数
11 11
ADC指令的使用价值
主要用于由于数据较大(多字节),需要多次运算的加法 运算中。 例:有两个4字节的无符号数相加:
2D568F8CH+3C9E489BH=? 设 被加数存放在BUF1开始的存储区内
加数存放在BUF2开始的存储区内 要求和放回BUF1存储区 假设CPU进行8位的加法运算,为此将进行4次加法运算
.386
……
MOVZX AX, A
MOVZX BX, B
ADD
AX, BX
MOVZX BX, C
ADD
AX, BX
MOV
SUM, AX
;取第一个数,扩展0传送 ;取第二个数 ;加第二个数 ;取第三个数 ;加第三个数 ;保存三个数的和
20 20
[例] P,Q,R均为8位有符号数,求它们的和,送入TOTAL
这个问题的另一种方法:
MOV AL, A
;取第一个数
MOV AH, 0
;高8位清零,准备存放和的高8位
ADD AL, B
;加第二个数
ADC AH, 0
;如果有进位,存入AH
ADD AL, C
;加第三个数
ADC AH, 0
;如果有进位,加入AH
MOV SUM, AX ;保存三个数的和
19 19
这个问题的第三种方法:

第三章 8086的寻址方式和指令系统[3-4]

第三章 8086的寻址方式和指令系统[3-4]

§3-3 8086的指令系统
3、循环控制指令(Iteration Control)
通常的循环控制
MOV CX, N ; N为循环次数 BEGIN: …. …. …. DEC CX JNZ BEGIN 用LOOP BEGIN替换
循环体
有了循环控制指令,上面程序简化为: MOV CX, N BEGIN: ……
单字节指令,总是被安排在中断服务程序的出口处。
任何中断服务程序不管是外部中断引起的,还是内部中断引起的 , 最后都要
用IRET返回。
举例:
主程序: CODE START: SEGMENT ASSUME CS:CODE, DS:CODE …… STI . . . ENDS END START 中断子程序: …… STI . . . CLI … STI IRET
微型计算机原理与接口技术
第 8讲 佘青山
86919130 qsshe@
There’s always more to learn, and there are always better ways to do what you’ve done
( 1 )无符号数比较测试指令中,指令助记符中的“ A”是英文 Above的缩写, 表示“高于”之意,“B”是英文Below的缩写,表示“低于”之意;
(2)带符号数比较测试指令中,指令助记符中的“G”(Great than)表示大于, “L”(Less than)表示小于。
12:16
17
§3-3 8086的指令系统
24
CODE
12:16
§3-3 8086的指令系统
6类指令系统:
数据传送指令 算术运算指令 逻辑运算和移位指令 字符串处理指令

微机原理与接口技术 (第三版)电子工业出版社 第03章 8086的指令系统

微机原理与接口技术 (第三版)电子工业出版社 第03章 8086的指令系统

4、寄存器间接寻址(Register indirect addressing) 内存单元的逻辑偏移地址通过寄存器 间接给出。 例: MOV SI , 61A8H MOV DX , [SI]
5、基址/变址寻址(Based/Indexed addressing) 位移量是一带符号的16位16进制数。当 使用BX或BP寄存器时,称基址寻址;使用SI 或DI寄存器时,称变址寻址。 例: MOV CX , 36H[BX] MOV -20[BP] , AL
2、MOV数据传送指令 其格式为: MOV 目的操作数,源操作数 • 目的操作数和源操作数均可采用不同的寻 址方式, • 两个操作数的类型必需一致。
二、寻址方式介绍பைடு நூலகம்
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码后面, 作为指令一部分存放在内存的代码段中,这 种操作数称为立即数。 例: MOV AX , 34EAH MOV BL , 20H
3)、段间直接转移 JMP far PTR 目标地址 4)、段间间接转移 JMP WORD PTR[BX][SI]
2、条件转移指令
1)、单条件转移指令 ① JC ② JNC ③ JE/JZ ④ JNE/JNZ ⑤ JS ⑥ JNS ⑦ JO ⑧ JNO ⑨ JP/JPE ⑩ JNP/JPO ;CF标志为1,则转移 ;CF标志为0,则转移 ;ZF标志为1,则转移 ;ZF标志为0,则转移 ;SF标志为1,则转移 ;SF标志为0,则转移 ;OF标志为1,则转移 ;OF标志为0,则转移 ;PF标志为1,则转移 ;PF标志为0,则转移
3、目标地址传送指令
这类指令有: 1)LEA 有效地址传送到寄存器 2)LDS 装入一个新的物理地址 3)LES 装入一个新的物理地址

微机原理第3章2

微机原理第3章2

(2)使CX的b11, b7, b3 位清零。
(3)测试DX的b0 、 b8 位是否同是1.
(4 )以下可使寄存器AX和CF同时清零的指令 是
A. SUB AX, AX B. XCHG AX, AX
C. PUSH AX
D. XOR AX, AX
21
例3—28 统计负数的个数
从4000 H开始的单元中存放有32个有符号数, 统计负数的个数,存人 BUFFER单元中。
格式:
NOT OPRD
操作:
操作数按位取反再送回原操作数
注:
指令中的操作数不能是立即数,只能是 MEM/REG
指令的执行对标志位无影响
例:NOT BYTE PTR[BX] 16
(4)“异或”运算指令
格式:
XOR OPRD1,OPRD2
操作:
两操作数相“异或”,结果送目标地址
AL
00011010
CF
0
CF
0
CF
0
29
(3) 算术右移指令SAR
格式: SAR OPRD,I SAR OPRD,CL
有符号数 的右移
CF
30
算术右移 符号位保持不变
31
非循环移位指令的应用
左移可实现乘法运算 右移可实现除法运算
32
例3-30 16位无符号数 乘以10
8086指令系统(2)
1
三、逻辑运算和移位类
逻辑运算
移位操作
非循环移位 循环移位
2
逻辑运算和移位指令
3
指令类型
逻辑运算
与,或,非,异或
移位操作
非循环移位,循环移位
4
1、逻辑运算指令
逻辑运算指令对操作数的要求大多与ADD指令相同 。“非”运算指令要求操作数不能是立即数;(“非” 指令同INC,其他指令搭配规则同ADD)

微机原理第3章指令

微机原理第3章指令

第3章指令系统机器指令:能指示计算机完成基本操作的二进制代码指令系统:CPU可执行的机器指令的集合。

为了方便编程,人们又把完成特定操作的机器码用特定的符号表示,这就产生了符号表示的机器指令-------指令助记符。

第3章8086指令系统机器指令由二进制代码组成,一条指令包括操作码和操作数(或地址)两部分,操作码指明该指令进行何种操作,操作数用来说明操作对象。

个别指只有操作码没有操作数。

由于不同的指令所表达的信息不尽相同,因此指令的长度即机器码字节数也有长有短。

8086指令系统的指令是可变长指令(1~6个字节)3.18086CPU寻址方式重点是存储器寻址存放在存储器中的数据称为存储器操作数。

指令中需要确定存储单元的段地址、偏移地址(亦称有效地址EA),以及存储器操作数的类型。

段地址存放在段寄存器中,确定段地址实际上就是确定段寄存器,采用的方法是默认或添加段超越前缀。

生成存储器有效地址有多种方法,这些方法形成了对存储器操作数的多种寻址形式。

确定数据类型的方法是源操作数和目的操作数类型一致原则或附加类型说明。

立即寻址方式中操作数也在存储器中,但立即寻址中的立即数包含在指令中,随程序存放在代码段,CPU在取指令时就获得操作数。

这里所说的存储器操作数是存放在数据段、附加段或堆栈段中,取指令时也不会被立即取到。

段超越前缀变量的定义在第四章详细介绍直接寻址:MOV AX,[2000H];寄存器间接寻址:MOV ES:[DI],AH基址寻址:MOV BYTE PTR[BX+1200H],10变址寻址:MOV DL,[SI+2AH]基址加变址寻址:MOV CL,[BX+SI+5]MOV AX,[BP+DI]MOV CL,[BX+SI+5]的等价形式:MOV CL,5[BX][SI]、MOV CL,5[BX+SI]、MOV CL,[BX][SI+5]MOV CL,[BX+SI-5]等价于MOV CL,[BX+SI+65531] MOV CL,[BX-SI]MOV CL,[SI+DI]错误!MOV[BX+DI],1000H正确吗?3.2.1数据传送类指令传送指令把数据从一个位置传送到另一个位置使用MOV指令应注意1.立即数只能作为源操作数2.无存储器之间直接传送与交换的指令3.没有用立即数对段寄存器直接赋值的指令4.段寄存器之间无传送指令5.两个操作数的类型要一致6.要能确定是字节还是字操作mov ah,al mov bvar,ch mov ax,bx mov ds,ax mov al,[bx]下列MOV指令正确吗?MOV AL,050AHMOV SI,DLMOV[BX+SI],255MOV DS,100HMOV[BX],[SI]MOV[BX+SI],bvarbvar是一个已定义过的字节变量 MOV CS,[SI]将数据段中偏移地址为2000H、2001H、2002H的3个字节的存储单元置数FFH。

003_微机原理-指令系统_2

003_微机原理-指令系统_2

MOV DS, AX
不影响标志位
3.3 指令系统—换码指令
指令书写格式: XLAT
指令执行的操作:
(AL)←((DS:BX+AL)) 查表操作,将BX指定的缓冲区中、AL指定的位移处的一个字节数 据取出赋给AL
指令说明
操作数隐含使用基地址寄存器BX与AL寄存器 换码指令执行前,在主存建立一个字节量表格,内含要转换的目 的码字,表格首地址存放于BX,AL存放相对表格首地址的位移量 换码指令执行后,指令将AL寄存器的内容转换为目标码字,因为 偏移量AL为8位,表格长度≤256字节 不影响标志位
数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令
控制转移指令
处理器控制指令
3.3 指令系统-通用数据传送指令
指令书写格式: MOV dst, src
指令执行的操作:(dst)←(src) 指令说明
操作数类型:立即操作数,寄存器操作数,存储器操作数 立即操作数不能作为目的操作数DST 错误:MOV 30H, AL 两个操作数也不能同时为存储器操作数 错误: MOV [DI+100H], [SI+200H]
dst为目的操作数,操作数类型可为寄存器操 作数或存储器操作数 cnt为移位次数,可为立即数1,或由寄存器 CL指定 SHL、SHR和SAL指令影响标志位CF和OF, cnt=1时,SHL与SAL移位后的最高位和CF不 同,则OF=1;SHR,OF=移位前最高位 SAR指令影响标志位CF、OF、PF、SF、ZF, AF不确定;
; 测试AL中数据的奇、偶
3.3 指令系统-移位指令
逻辑左移指令: SHL dst, cnt 算术左移指令: SAL dst, cnt

计算机原理指令系统

计算机原理指令系统

I/O端口寻址
二. I/O端口寻址
操作数在I/O端口中时,必须通过累加器(AX或AL)实现对端口的访问 1. 直接端口寻址 — 指令直接提供8位端口的地址 例:IN AL, 63H ;AL(63H) 端口寻址时,地址不加[ ],当端口地址可用一个字节来表示时,可使用 直接端口寻址 2. 间接端口寻址 — 由DX寄存器给出16位端口地址
例:MOV AX, [BX+1000H] ;AX BX+1000H 所指向的存储单元 内容
若BX = 2000H,则将数据段(3000H, 3001H)的内容传送给AX
指令也可书写为: MOV AX, 1000H[BX]
7. 基址变址寻址
操作数的有效地址由基址寄存器和变址寄存器的内容相加产生
例:MOV
8086指令介绍
第3.3节 8086指令介绍
8086 CPU共有133条指令,根据操作性质,可分为: ➢ 传输指令 ➢ 算术运算指令 ➢ 逻辑运算和移位指令 ➢ 串操作指令 ➢ 控制转移指令
※ 操作数的符号表示 ✓ DST:目的操作数 ✓ SRC:源操作数 ✓ TARGET:循环、转移和调用指令中的目的操作数
CPU内部操作数寻址
一. 数据寻址方式
1. 立即数寻址
指令中直接给出操作数,指令执行时可以立即得到,此时 把操作数又称作“立即数”
例:MOV AL,5 ;AL5
2. 寄存器寻址
操作数放在CPU内部的寄存器中,在指令中直接指出寄存 器的名字
例:INC CX ;将CX的内容加1
3. 隐含寻址
指令已经默认是对CPU中的某个寄存器操作
PUSH 1000 错误
➢ 操作:DST (SP+1, SP),SP SP+2

第三章 8086的寻址方式

第三章 8086的寻址方式
7
8086/8088指令概述
操作数的一般形式: 3、存储器操作数:这类操作数是指定存储单元 的内容或该单元的地址.
例1:MOV DS:[1000H], AL 其意义是将AL的内容送存储器数据段中偏移地址为 1000H的单元中去。
例2: 若指令改写为MOV AL,DS: [1000H]
指令意义为将数据段中偏移地址为 1000H 单元中的 内容送AL寄存器。前者指的是存储单元的地址,后者指 的是存储单元的内容
22
3.1 寻址方式
直接寻址: 符号地址:
8086/8088指令寻址方式
例3 :AREA1 EQU 0867H ; 等值伪指令EQU给常数0867H定义 一个符号AREA1 MOV AX,AREA1 ;AX=0867H 例4:AREA1 DW 0867H ;DW伪指令用来定义变量,
变量用来表示存储器中的数据。变量名AREA1表示内存中 一个数据区的名字,也就是符号地址,该地址单元存放一个字 数据0867H。 MOV AX,AREA1 ;
4、隐含操作数:这类操作数被操作助记符隐含着。 如,对压缩BCD加法结果进行调整的DAA,其操 作数就是隐含操作数AL。
5 、I/O端口操作数:可以作源操作数或目的操作数。 (I/O端口地址,可以直接或寄存器间接给出)
如: IN AL, 44H
OUT 量和常量三个概念:
例如:MOV AX,BX
3
8086/8088指令概述
例如:MOV AX,BX
用 MOV表示进行数据传送的操作码,用 AX、 BX表示操作数, 显然这样的表示方式更清晰,更便于记忆和使用。 用符号、助记符书写的指令称为符号指令。用符号指令书写程 序的规范称为汇编语言,对应的程序称为汇编语言源程序。

第3章 8086指令系统(最后有练习题)

第3章  8086指令系统(最后有练习题)


开 始
8086CPU的指令系统的基本指令

包括数据传送类指令、算术运算类指令、 位操作类指令、串操作类指令、控制转移 类指令、处理机控制类指令。后几节将分 别介绍这些指令的语句格式和功能。
3.1 8086的寻址方式

3.1.1 数据的寻址方式 3.1.2 程序转移地址的寻址方式 3.1.3 对端口的寻址方式
3.1.2 程序转移地址的寻址方式
用来确定转移指令及CALL指令的转向地址。
段内寻址
段内直接寻址 段内间接寻址 段间直接寻址 段间间接寻址
段间寻址
段内:转移指令与转向的目标指令在同一代码段 中,(CS)不变。
段间:转移指令与转向的目标指令在两个代码段中, (CS) 变化。
表示转移距离(称为位移量)的操作符:
返回本节
2 . 寄存器寻址


寄存器寻址方式的操作数在指令指明的寄 存器中。 汇编格式:R ,其中R表示寄存器名。 功能:操作数直接存放在寄存器R中。 例如:MOV AL,BL
【例3-2】下列程序执行后,(AX)=?,
(BX)=?
MOV AX,1234H
MOV BX,5678H
ADD AX,BX 执行:1234H→AX 5678H→BX (AX)+(BX)→AX 执行后:(AX)=68ACH,(BX)=5678H
3 . 直接寻址




特点:操作数在内存中。 汇编格式:①含有变量的地址表达式。 ②段寄存器名:[EA] 。 功能:指令下一字单元的内容是操作数的偏 移地址EA。 图形表示:
【例3-3】
寄存器和存储器内容为:(AX)=1212H, (DS)=3000H,(32000H)=45H, (32001H)=46H。 执行指令:MOV AX ,[2000H] 问执行后:(AX)=? Step1:计算地址DS*16+2000H=32000H Step2:找内容(32000H),(32001H) 所以执行后:(AX)=4645H

第三次课 8086的指令系统

第三次课   8086的指令系统

第三章8086的指令系统3.1 8086指令系统概述所谓一个微处理器的指令系统是一个微处理器所执行的全部指令的集合。

在8086的指令系统中一共有133条指令。

8086指令系统是在8位微处理器8080/8085的指令系统基础上设计的,它兼容了8080/8085的全部指令,这部分对8位微处理器具有兼容性的指令往往是处理字节(8位)的。

此外,8086还有自己所特有的对字或字符串的处理指令,以及对带符号数的运算指令、中断指令和协处理器指令。

对微处理器的指令的描述,一般有两种表示方法:指令的机器码和汇编指令。

无论对于机器码指令还是对于汇编指令均要解决三个问题(三个信息)(1)指令要完成什么操作(操作码);(2)参加这个操作的操作数在哪里(操作数);(3)操作结果放在哪里(结果);为了简化指令,通常在微机系统中规定:操作结果要放在某一个操作数中。

如MOV AL,08H;ADD AX,BX;(源操作数,目标操作数)这样,就将指令所要提供的信息简化为了两部分:操作码、操作数。

指令的机器码就是用二进制码描述指令的操作码和操作数的一种方式,实际上在微机系统内部,指令就是以机器码的形式存在的。

所谓的汇编指令是用指令功能的英文缩写表示操作码,用数字和符号表示操作数的指令描述方法。

例如操作码操作数MOV AX,2000H操作码B8H操作数:00H20H由于汇编语言程序有便于理解、识别、阅读和交流的优点。

所以汇编指令得到了广泛的应用。

但由于最终在机器中使用的是机器码,所以要有一个中间环节就是对其进行翻译。

3.2 8086指令的寻址方式所谓寻址方式就是寻找操作数的方式,所以寻址方式实际上在两种情况下被涉及:一种是用来对操作数进行寻址;另一种是对转移地址和调用地址进行寻址。

下面我们所讨论的寻址方式都是针对操作数的,关于指令地址的寻址,将在讲述转移指令和调用指令时作具体说明。

一条指令的机器码通常包含操作码(OP)和操作数两部分。

汇编-第3章 8086指令系统

汇编-第3章 8086指令系统

3.3 指令的执行时间
3.4 8086/8088指令系统
3.1 8086/8088指令格式
机器指令:指挥计算机完成某种操作的命令。
从计算机组成的层次结构来说,计算机指令 有机器指令、伪指令和宏指令之分。
指令格式如下:
操作符 目的操作数,源操作数
3.2 8086/8088寻址方式
3.2.1 固定寻址(隐含操作数)
数据类型不匹配 不允许两个操作数都是存储器单元 目的操作数不允许是立即数
注意事项:
MOV指令中的源操作数绝对不能是立即数和代码段CS寄存器; MOV指令中绝对不允许在两个存储单元之间直接传送数据;
MOV指令中绝对不允许在两个段寄存器之间直接传送数据;
MOV指令不会影响标志位
练习: p33-3.12, 3.13 p34-3.14
B0 05
指令
例: MOV AX, 3045H
执行指令后: (AX) = 3045H 练习: p25-3.1,3.2
AX 30 45
存储器
低地址
OP 45 30
指令
高地址
3.2.3 寄存器寻址 特点:操作数存在寄存器中
例: MOV AX, BX
执行指令前: (AX) = 3045H
执行指令后: (AX) = 4000H
Байду номын сангаас
注意:当 指令中的偏移量为0时,则可以缺省,此时的寻址方式 也称为基址变址寻址方式
例:设 ( SS ) = 3000H ( BP ) = 2000H ARRAY = 0250H ( SI ) = 1000H MOV AX, ARRAY[BP][SI]
要访问的存储单元物理地址为: 30000H+2000H +0250+1000H = 33250H

第3章80888086指令系统(老师用的课件哦)

第3章80888086指令系统(老师用的课件哦)

第3章 8088/8086指令系统
图3.5 变址寻址示意图
第3章 8088/8086指令系统
例:MOV AX,200AH[SI];或(AX)←
[(DS)*16+(SI)+200AH
EA=(SI)
+200AH,SI为变址寄存器,200AH为16位的位移量。
图3.6为用BP寄存器进行变址寻址时的示意图。
第3章 8088/8086指令系统
3.存储器操作数 存储器操作数是把操作数放在存储器单元中。对这 类操作数,在指令中必须给出存储器的地址。存储器 的实际地址(也称物理地址)是由指定的段基址和段内地 址偏移量(也称为有效地址EA)所决定的。由于段基址 相对很少改变,故一般预先予以指定,以后通过隐含 方法使用,即只要段基址未改变,其在汇编指令中便 不再出现。此时,只给出有效地址EA(以各种寻址方式 给出)。
第3章 8088/8086指令系统
3.2 8088/8086指令系统
3.2.1 数据传送指令 1 .数据传送指令MOV 指令格式:MOV OPRD1,OPRD2 MOV 为操作码。 OPRD1为目的操作数,可以是寄存器、存储器、
累加器。
第3章 8088/8086指令系统
OPRD2为源操作数,可以是寄存器、存储器、累 加器和立即数。
第3章 8088/8086指令系统
4.寄存器间接寻址
寄存器间接寻址的操作数类型为存储器操作数,与 直接寻址方式的区别是:该存储单元的16位段内偏移 地址,不是从指令代码中直接得到,而是从指令所指 定的寄存器中得到。能用于间接寻址的寄存器为SI、 DI、BX、BP。若以SI、DI、BX进行间接寻址,应由 数据段DS的内容作为段基址,间接寻址寄存器的内容 为段内偏移量,并指定形成操作数的物理地址。若以 寄存器BP间接寻址,则BP中的内容为段内偏移量,段寄 存器SS与之一起形成物理地址。寄存器间接寻址示意 图如图3.4所示。

汇编语言与接口技术课后答案(1-8章完整版)-王让定朱莹编(下载后可查看剩余几章内容)

汇编语言与接口技术课后答案(1-8章完整版)-王让定朱莹编(下载后可查看剩余几章内容)

第一章(下载后可查看)第二章1.8086/8088 CPU 的地址总线有多少位?其寻址范围是多少?答:8086/8088 CPU 的地址总线共20位, 最大可寻址1MB空间。

2.8086/8088 CPU分为哪两个部分?各部分主要由什么组成?答:8086/8088 CPU 分为总线接口部件(BIU)和执行部件(EU)两个部分。

其中BIU包括:4 个16 位的段地址寄存器(CS、DS、SS、ES);1个16位的指令指针寄存器IP;1个20位的地址加法器;指令队列寄存器;内部寄存器;输入输出总线控制逻辑;EU包括:4 个16 位的通用数据寄存器(AX、BX、CX、DX);4个16位的专用寄存器(BP、SP、SI、DI);1个16位的标志寄存器FR;4. 8086/8088 CPU 中有几个通用寄存器?有几个变址寄存器?有几个指针寄存器?通常哪几个寄存器亦可作为地址寄存器使用?答:8086/8088 CPU 中共有:8个16位的通用寄存器AX、BX、CX、DX 、BP、SP、SI、DI;2 个变址寄存器SI 、DI;2 个指针寄存器BP、SP;其中BX、BP、SI 、DI 亦可作地址寄存器。

5.8086/8088 CPU 中有哪些标志位?它们的含义和作用如何?答:8086/8088 CPU中共有9个标志位,其中DF、IF 和TF为控制标志位,其余6 个为状态标志位。

它们的含义和作用如下所示:CF(Carry Flag) 进位标志: 若算术运算的结果产生了进位或借位( 对字节操作最高位是D7位;对字操作最高位是D15位),则CF=1,否则CF=0。

PF(Parity/Even Flag) 奇偶标志:如果运算结果中含有偶数个1, 则PF=1,否则PF=0。

此标志位主要用于数据通信中, 检测数据传送有无出错。

AF(Auxiliary Carry Flag) 辅助进位标志: 用于反映一个字节( 字的低字节) 的低4位向高4位有无进位(借位)的情况,有进(借)位时,AF=1,否则AF=0。

第3章 指令系统3-2(2)

第3章 指令系统3-2(2)

例3-60 用SAR指令计算-128/8=-16的程序如下: MOV AL,1000 0000B ;AL=-128 MOV CL,03H ;右移位次数3 SAR AL,CL ;右移3次 指令执行后,AL=0F0H=-16。
10
CF
MSB←—----------------LSB
ROL循环左移
CF
MSB—---------------→LSB
SAR算术右移
7
例3-58 MOV AH,06H SAL AH,1 MOV CL,03H SHL DI,CL SAL BYTE PTR[BX],1
CF MSB←—----------------LSB ←0 SHL/SAL逻辑/算术左移
8
CF 0
MSB-—---------------→LSB
SHR逻辑右移
27
表3-11 直接标志条件转移指令 指令助记符
JC JNC JZ/JE JNZ/JNE JS
测试条件
CF=1 CF=0 ZF=1 ZF=0 SF=1 有进位 无进位
指令功能
转移 转移 转移 转移
结果为零/相等 符号为负
结果不为零/不相等 转移
JNS
JO
SF=0
OF=1
符号为正
溢出
转移
转移
JNO
JP/JPE
例3-55 假设AX中存有两个BCD数0508H,要将它 分别转换成ASCII码,结果放回AX。 OR AX,3030H
4
例3-56 若AL中存有某外设端口的状态信息,其中 D1位控制扬声器发声,要求该位在0、1之间来回变 化,其余各位保留不变,实现如下:
XOR AL,0000 0010B
5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

执行RCR AL,1后,AL=1101 1010,CF=0
例1:将DX.AX中32位数值左移一位 SAL/SHL AX,1 RCL DX,1
DX
CF
AX
0
例2:测试BL寄存器中D5的状态,若为0,则转ZERO
MOV CL,3
ROL BL,CL JNC ZERO ; CF=0,转移到 ZERO
3.6 串操作指令 串操作指令是8086指令系统中比较独特的一类指 令,采用比较特殊的数据串寻址方式,在操作主存连 续区域的数据时,特别方便。 特点:
3.7.1 控制转移指令的寻址方式
8088/8086的寻址方式分为两类: 关于寻找数据的寻址方式 关于寻找转移地址的寻址方式 转移可以分成两类:段内转移和段间转移
例如: 若CF=1,CL=02H, AL=11011101 则执行指令:SHL AL,CL后, AL=01110100 , CF=1 则执行指令:SAL AL,CL后, AL=01110100 , CF=1 则执行指令:SHR AL,CL后, AL=00110111 , CF=0 则执行指令:SAR AL,CL后, AL=11110111 , CF=0
重复前缀共有5种:REP/REPZ/REPE/REPNZ/REPNE
重复前缀不能单独使用,只能加在串操作指令之前,用来 控制跟在其后的基本字符串操作指令,使之重复执行。
1) REP 无条件重复
执行的操作: ①若(CX)=0,则退出REP,否则往下执行; ②(CX)←(CX)-1; ③执行后跟的串操作指令; ④重复①~③。 REP前缀可以理解为:当数据串没有结束(CX≠0),则 继续传送。
若采用重复前缀,程序段如下: MOV SI,OFFSET AREA1 MOV DI,OFFSET AREA2 MOV CX,100 REP MOVS AREA2,AREA1
2.串比较指令 CMPS
指令格式: CMPS dst,src 或 MCPSB/MCPSW 指令功能: ① DS:[SI] -ES:[DI] ② 修改地址指针:DI←DI ± 1,SI←SI ± 1 或 DI←DI ±2,SI←SI± 2 该指令把DS段中由SI所指的字节串或字串与ES段中的由DI 所指的字节串或字串比较 (进行相减),但不送回结果,只影响 OF、SP、ZF、AF、PF和CF,并在比较之后,自动修改地址 指针。
3.5 移位指令和循环移位指令 3.5.1 移位指令 移位指令:算术左、右移指令SAL、SAR 逻辑左、右移指SHL、SHR。 格式 SHL src,CL1/1 SAL src,CL/1 SAR src,CL/1 SHR src, CL/1
其功能是用来实现对寄存器或存储单元的 8位或16位数据移动一位或多位。 移位指令的第一个操作数是指定的被移 位的操作数,可以是寄存器或存储单元;后 一个操作数表示移位位数: 若该操作数为1,表示移动一位 若该操作数为CL,CL寄存器值表示移位 位数 (移位位数大于1只能用CL表示)
5. 存字符串指令 STOS
指令格式:STOS dst 或 STOSB/STOSW 指令功能: ① ES:[DI] ← AL /AX ② 修改地址指针:DI←DI ± 1 或 DI←D到ES段由DI所指的内存单元, 并且自动修改地址指针(DI)←(DI)+1(或2)。STOSB/STOSW可以 与REP前缀配用,实现在串内存单元中填入某一相同的数。
1.算术左移指令SAL /逻辑左移指令SHL
指令格式:SAL/ SHL dst,CL/1 指令功能:SAL和SHL的操作相同,将目的操作数顺序向左 移位,最低位补0,最高位进入CF 操作数:8位或16位,寄存器或存储器
CF
dst 0 SAL
CF
dst
0 SHL
例如:SAL SI,1
SHL BYTE PRT [BX],CL
1)串操作指令的操作数是主存中连续存放的数据串 (String)——即在连续的主存区域中,字节或字的序列 2)串操作指令的操作对象是以字(W)为单位的字串, 或是以字节(B)为单位的字节串。
3)源操作数用寄存器SI寻址,默认在数据段DS中,但允 许段超越:DS:[SI] 目的操作数用寄存器DI寻址,默认在附加段ES中,不允 许段超越:ES:[DI]
注意:在使用该指令前将搜索的关键字存于AL/AX 中,若找到搜索字,ZF=1。
例:在ES段偏移地址为1000H的存储区中,有一个长度为 50的字符串,查找是否存在‘空格’符。 程序段如下: MOV DI,1000H MOV AL,20H ;取空格ASCII码 MOV CX,32H ;比较字节个数送CX CLD ;设置增址比较 REPNE SCASB ;搜索 JZ FOUND ;ZF=1,发现空格 ... ;不含空格,则继续执行 FOUND: ... 注意:找到后对应的字符单元为DI-1
例:数据区的初始化(清零或置同一数)
例:编程使ES段中从0400H开始的256个单元清0。 程序段如下: LEA DI,ES:[0400H] MOV CX,0080H CLD XOR AX,AX REP STOSW
;DI指向存储目的首址 ;计数值为128个字 ;增址存储
;0重复存入256个字节中
3.7 控制转移指令
4)串操作指令执行时,由方向标志决定数据串处理方向,当 DF=0时(执行CLD指令后),表示正向处理(地址指针增1或 2);当DF = 1时(执行指令STD后),表示反向处理(地址 指针减1或2)。 5)串长度必须放在CX寄存器中
6)可在串操作指令前加重复前缀,每重复执行一次,CX 内容会自动减1。 需注意的是,执行带有重复前缀的指令时,对CX的检 测是在执行指令前进行的。
8086的指令执行顺序由代码寄存器CS和指令指针IP的内容 确定。
控制转移类指令通过改变IP(和CS)值, 实现程序执行顺序的改变
8086的控制转移类指令可分为四小类,即无条件转移 与调用返回、条件转移、循环控制和中断类指令。除中断 类指令外,其它类指令均不影响标志位。
控制转移类指令用于实现分支、循环、过程等程序结 构,是仅次于传送指令的最常用指令
3. 算术右移指令SAR 格式:SAR dst, 1/CL 功能; dst右移1/CL位;最高位不变,最低位进入CF opr CF SAR
算术左移一位相当于有符号数乘以2 算术右移一位相当于有符号数除以2
-64≤x≤+63 -128≤x≤+127
标志位:移位指令按照移入的位设置进位标志CF,根据移位后 的结果影响SF、ZF、PF、OF 由于移位后可能使符号位发生变化,可通过测试OF 位来判断。 当移位次数为1时:OF=1 ——移位前后符号位有变化 OF=0 ——移位前后符号位无变化
或 DI←DI ±2,SI←SI± 2
*用 MOVS 指令可实现存储器单元间的数据传送; *前面加REP指令可实现一批存储器单元间的数据传送。
例3-7 : 将数据段中从AREA1开始存放的100个字节数据传送 到附加段以AREA2为首地址的区域。 采用用字符串传送指令实现。程序段如下: MOV SI,OFFSET AREA1 LEA SI,OFFSET AREA1 MOV DI,OFFSET AREA2 LEA DI,OFFSET AREA2 MOV CX,100 offset是汇编操作符, AGAIN:MOVS AREA2,AREA1 求出变量的偏移地址 DEC CX 转移指令,ZF ≠ 0转 JNZ AGAIN
CF
opr
ROL
CF
opr
RCL opr RCR CF
CF
opr ROR
循环移位指令的操作数形式与移位指令相同,按指令功能 只影响CF和OF,同样只有当cnt=1时,OF才有意义。不影 响SF、ZF、PF、AF标志 特点:不会丢失源操作数的有效数位 例:设AL=1011 0100B,CF=1执行下列语句: 执行ROL AL,1 后,AL=0110 1001,CF=1 执行ROR AL,1后,AL=0101 1010,CF=0 执行RCL AL,1后,AL=0110 1001,CF=1
4.取字符串指令 LODS
指令格式: LODS src 或 LODSB/LODSW
指令功能: ① AL /AX ←DS:[SI]
② 修改地址指针:SI←SI ± 1或 SI←SI± 2 该指令用来把DS段中由SI所指的存储单元的内容取到AL(或 Ax)中,因此,LODSB/LODSW指令不能加前缀,否则,AL或 AX中的内容会被后一次取入的字符所覆盖。 LODS指令不影响状态标志位。
2) REPE/REPZ 相等/结果为0 (ZF=1)时重复
指令功能:若CX≠0,且ZF=1,重复执行,CX←CX-1, 若CX=0,或 ZF=0,执行下一条指令。
一般用于比较指令和搜索指令,表示只有当两数相等方可 继续比较;若遇到两数不相等时,则可提前结束串操作。即当 数据串没有结束(CX≠0),并且串相等(ZF=1),则继续比 较.
3.5.2 循环移位指令
循环移位指令有四条类似移位指令,但要将从一端移 出的位返回到另一端形成循环。分为: ROL dst, 1/CL ;不带进位循环左移 ROR dst, 1/CL ;不带进位循环右移 RCL dst, 1/CL ;带进位循环左移 RCR dst, 1/CL ;带进位循环右移
串比较指令前可采用重复前缀 REPE/REPZ ,其意义为 当CX=0或ZF=1(两元素相同),重复执行结束。 串比较指令前还可采用重复前缀 REPNE/REPNZ ,其意义为 当CX=0或ZF=0 (两元素不相同),重复执行结束。
例3-8: 上例用MOVS指令传送后,源数据串与目的字节串, 是否相同。若不一样,将找出的不一样的元素存入AL中, 并将偏移地址并记入BX,若相同,在BX中置数FFFFH。 程序段如下: CLD ;设置增址比较 MOV SI,OFFSET AREA1 MOV DI,OFFSET AREA2 MOV CX,64H REPE CMPSB ;增址重复比较 JNZ ERROR ;出现不相同元素转移 MOV BX,0FFFFH ;两数据串相同 JMP STOP ERROR : DEC SI MOV BX,SI MOV AL,[SI] STOP:HLT---
相关文档
最新文档