五、8086系统的最小/最大工作方式 最小工作方式:
① INTA:中断响应信号,输出,低电平有效。 ② ALE:地址锁存允许信号,输出,高电平有效。 ③ DEN:数据允许信号,三态输出,低电平有效。 ④ DT/R:数据发送/接收控制信号,三态输出。
⑤ M/IO:存储器或I/O端口选择信号,三态输出。M/IO=1,表示当前CPU正在访问存储器;M/IO=0,表示当前CPU正在访问I/O端口。
⑥ WR:写信号,三态、输出。当WR=0低电平有效时,表示当前CPU正在对存储器或I/O端口进行写操作。
⑦ HOLD:总线保持请求信号,输入,高电平有效。 ⑧ HLDA:总线请求响应信号,输出,高电平有效。 最大工作方式:
在最大方式系统中,外加有8288总线控制器,一般包含2个或多个处理器。 8282:地址锁存器,8286:数据收发器 第三章 8086指令系统 一、计算机语言
1.机器语言:面向机器,0和1表示机器是否可接受并执行指令。 2.汇编语言:面向人,符号表示,必须翻译才能执行。 汇编语言指令的格式: 一般格式:操作码 操作数
具体格式:标号:操作码(空格分隔符)目的操作数(存放结果),(逗号分隔符)
源操作数;注释
一条指令可以无操作数,必须有操作码,不同的机器,操作数个数不同。 3.高级语言
二、指令寻找操作数的寻址方式
操作数通常保存在:(1)指令中(2)CPU内部寄存器中(3)内存单元中(4)I/O端口中;
8086/8088CPU与数据有关寻址方式:
1. 立即寻址 2.寄存器寻址 3.直接寻址 4.寄存器间接寻址5.变址寻址6.基址寻址
7.基址加变址寻址9.相对基址变址寻址10. I/O端口寻址11. 数据串寻址 例:
设DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=3000H,位移量DISP=1618H,试判断下列指令的寻址方式,并求出在各种寻址方式下,这些寄存器与位移量所产生的有效地址EA和实际地址(物理地址)PA。说明指令执行的结果。
① MOV AX,[0618H]
这是一条直接寻址方式的指令。 EA=0618H
PA=12000H+0618H=12618H
该指令执行的结果是将数据段的实际地址为12618H和12619H两单元中的内容取出送AX。
② MOV AX,[BX]
这是一条以数据段基址寄存器BX间接寻址的指令。 EA=05A6H
PA=12000H+05A6H=125A6H
该指令执行的结果是将数据段的125A6H和125A7H两单元的字内容取出送AX。 ③ MOV AX,[BP]
这是一条以堆栈段基址寄存器BP间接寻址的指令。由于寻址时用上了BP寄存器,则操作数所默认的段寄存器就是SS。 EA=40A0H
PA=50000H+40A0H=540A0H该指令执行的结果是将堆栈段的540A0H和540A1H两单元的字内容取出送AX。 ④ MOV AX,[DI]
这是一条变址寻址的指令。 EA=3000H
PA=12000H+3000H=15000H
该指令执行的结果是将数据段的15000H和15001H两单元的字内容取出送AX。 ⑤ MOV AX,[BX+DI]
这是一条基址加变址寻址的指令。 EA=05A6H+3000H=35A6H PA=12000H+35A6H=155A6H
该指令执行的结果是将数据段的155A6H和155A7H两单元的字内容取出送AX。 ⑥ MOV AX,[BP+SI+DISP]
这是一条带位移量的基址加变址寻址的指令,又叫相对基址加变址寻址的指令,且操作数的默认段为SS。 EA=40A0H+2000H+1618H=76B8H PA=50000H+76B8H=576B8H
该指令执行的结果是将堆栈段的576B8H和576B9H两单元的字内容取出送AX。 三、指令的寻址=>CS:IP(不用表示,固定的) 转移寻址:用于控制转移类指令。
实质:控制转移类指令通过改变IP和CS值,从新位置开始执行指令。 转移寻址分成2种类型:段内转移和段间转移。
条件转移指令只允许实现段内转移,而且是段内短转移,由指令中直接给出8位地址位移量
无条件转移和调用指令又可分为段内短转移、段内直接转移、段内间接转移、段间直接转移和段间间接转移等5种不同的寻址方式。 段间转移=远转移。 四、指令分类
8086/8088的指令按功能可分为6类:数据传送、算术运算、逻辑运算、串操作、程序控制和CPU控制。 1.数据传送类指令
数据传送类指令可完成寄存器与寄存器之间、寄存器与存储器之间、寄存器与I/O端口之间的字节或字传送,共同特点是不影响标志寄存器的内容,分成4种类型。 (1通用数据传送指令
(1)MOV d,s;d←s,即将由源s指定的源操作数送到目标d
源操作数(s)可以是8/16位寄存器、存储器的某个字节/字或者是8/16位立即数;目标操作数(d)不允许为立即数;两者不能同时为存储器操作数。 基本传送指令MOV d,s的类型有以下7种。 ① MOV mem/reg1,mem/reg2
由mem/reg2所指定的存储单元或寄存器中的8位数据或16位数据传送到由mem/reg1所指定的存储单元或寄存器中,但不允许从存储器传送到存储器。 ② MOV mem/reg,data
将8位或16位立即数data传送到由mem/reg所指定的存储单元或寄存器中。 ③ MOV reg,data
将8位或16位立即数data传送到由reg所指定的寄存器中。 ④ MOV ac,mem
将存储单元中的8位或16位数据传送到累加器ac中。 ⑤ MOV mem,ac
将累加器AL(8位)或AX(16位)中的数据传送到由mem所指定的存储单元中。 使用MOV指令时要注意的问题: CS不能做目的操作数
不能直接从存储器到存储器之间数据传送 2条伪指令:
WORD PTR表示字数据类型 BYTE PTR表示字节数据类型 (2)PUSH和POP
PUSH s:将源操作数(16位)压入堆栈