资源描述
第一章 概 述
一、 计算机中的数制
在计算机内部,一切信息的存取、处理和传送都是以二进制编码形式进行的
微机组成原理
8086微处理器
1、8086 CPU使用 16 根地址线访问I/O端口,最多可访问216=64K个字节端口,使用 20 根地址线访问存储单元,最多可访问220=1M个字节单元。类似这种类型的反过来的题目也应该会做:已知可寻址的内存空间最大为16MB, CPU的地址总线至少应有24条
2、8086 CPU 由哪几个部分组成?各个部分完成的什么工作?如何协调工作?
3. 8086和8088的主要区别是什么?
4、寄存器结构
8086微处理器包含有14个16位的寄存器和8个8位寄存器。
4个通用寄存器(AX,BX,CX,DX)
4个段寄存器(CS,DS,SS,ES)
4个指针和变址寄存器(SP,BP,SI,DI)
4)、指令指针(IP)
16位指令指针寄存器,其内容为下一条要执行的指令的偏移地址。
5)、8086的标志寄存器FLAG按其作用可分为哪两大类。
(1)状态标志位
(2)控制标志位
在8086的16位标志寄存器中,并不是每一位都有一定的含义,只有9位有含义,其余7位未用。
标志寄存器中的中断标志位IF是控制可屏蔽中断的标志。
IF=1时,CPU响应中断请求;
IF=0时,CPU屏蔽中断请求,不予响应
1、8086有14个16位寄存器和8个8位寄存器,其中哪两个寄存器保存了下一条要执行的指令所在单元的物理地址。CS,IP
物理地址PA(Physical Address)。8086的存储空间物理地址范围是00000H~FFFFFH
其计算方法是:将CPU中的16位段寄存器内容左移4位(×16)与16位的逻辑地址(又称偏移地址)在地址加法器内相加,得到所寻址单元的20位物理地址。
假设(CS)=0FE00H,(IP)=0400H,那么下一条要取出的指令所在内存单元的20位物理地址PA=0FE00H×10H+0400H=0FE400H。
逻辑地址1F80:2000对应的物理地址是21800H。
5、8086的引脚及其功能
若8086 CPU引脚状态是M/IO#=0,RD#=1,WR#=0,则此时执行的操作是写I/O
6、CPU执行指令时涉及三种周期:
时钟周期、总线周期、指令周期
三者关系:一个基本的总线周期至少由4个时钟周期组成(T1、T2、T3、T4)。指令周期是由1个或多个总线周期组合而成。
8086CPU在读/写总线周期的T3状态结束对READY线采样,如果READY为低电平,则在T3与T4状态之间插入等待状态TW。
第三章 8086指令系统
第一节 8086寻址方式
一、 数据寻址方式
指令的格式:操作码 目的操作数,源操作数
例: MOV AL ,19H
其中AL为目的操作数,19H为源操作数
1、立即寻址
操作数(为一常数)直接由指令给出
(此操作数称为立即数)
立即寻址只能用于源操作数
例:
MOV AX, 1800H 立即寻址指令执行速度最快
2、寄存器寻址
(1)操作数放在某个寄存器中
(2)源操作数与目的操作数字长要相同
例: MOV AX, BX
3、直接寻址
(1)指令中直接给出操作数的16位偏移地址
偏移地址也称为有效地址(EA, Effective Address)
(2)默认的段寄存器为DS,但也可以显式地指定其他段寄存器——称为段超越
例:
MOV AX ,[2A00H]
4、间接寻址
l 操作数的偏移地址(有效地址EA)放在寄存器中
l 只有SI、DI、BX和BP可作间址寄存器,可以提供偏移地址EA
l 例: MOV AX,[BP] 源操作数物理地址为16×(SS)+(BP)。
MOV CL,CS:[DI]
错误例 :× MOV AX, [DX] ; 只有SI、DI、BX和BP可作间址寄存器
× MOV CL, [AX] ;只有SI、DI、BX和BP可作间址寄存器
5、寄存器相对寻址
lEA=间址寄存器的内容加上一个8/16位的位移量
l 例: MOV AX, [BX+8]
MOV AX, 8[BP]; 默认段寄存器为SS
6、基址变址寻址
l 若操作数的偏移地址:
由基址寄存器(BX或BP)给出 —— 基址寻址方式
由变址寄存器(SI或DI)给出 —— 变址寻址方式
由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址,称为基址-变址寻址。
EA=(BX)+(SI)或(DI);
EA=(BP)+(SI)或(DI)
同一组内的寄存器不能同时出现。
注意:除了有段跨越前缀的情况外,当基址寄存器为BX时,操作数应该存放在数据段DS中,当基址寄存器为BP时,操作数应放在堆栈段SS中。
例:
7、相对基址变址寻址
l 在基址-变址寻址的基础上再加上一个相对位移量
EA=(BX)+(SI)或(DI)+8位或16位位移量;
EA=(BP)+(SI)或(DI)+8位或16位位移量
指令操作例:MOV 1283H [BX] [SI],AX
寄存器间接、寄存器相对、基址变址、相对基址变址四种寻址方式的比较:
寻址方式 指令操作数形式
n 寄存器间接 只有一个寄存器(BX/BP/SI/DI之一)
n 寄存器相对 一个寄存器加上位移量
n 基址—变址 两个不同类别的寄存器
n 相对基址-变址 两个不同类别的寄存器加上位移量
例:1、以下指令中,没有错误的是( )。
A) MOV BYTE[BX],1000
B)PUSH CS
C) POP CS
D) MOV AX,[SI][DI]
2、以下几种不同数据寻址方式的指令中,( )的指令执行速度最快。
A) MOV [2000],1800H
B) Mov [SI],1800H
C) Mov ax,1800H
D) MOV DS,1800H
第二节 8086指令系统
一、数据传送指令
1、通用传送指令
(1) MOV dest,src; dest←src
(2)、堆栈指令
按“后进先出”方式工作的存储区域。
① 压栈指令PUSH
② 弹出指令POP
例:假设(SS)=2000H,(SP)=0012H,(AX)=1234H,执行PUSH AX后,(SP)=0010H
2、输入输出指令
(1) 输入指令IN
(2) 输出指令OUT
二、算术运算指令
1、 加法指令
(1) 不带进位的加法指令ADD
实例:
ADD AL,30H
•ADD指令对6个状态标志均产生影响。
(1) 带进位的加法ADC
ADC指令在形式上和功能上与ADD类似,只是相加时还要包括进位标志CF的内容,例如:
ADC AL,68H ; AL←(AL)+68H+(CF)
ADC AX,CX ;AX←(AX)+(CX)+(CF)
(3)加1指令INC
功能:类似于C语言中的++操作:对指定的操作数加1
例: INC AL
例:执行如下程序:
MOV AX,0
MOV BX,1
MOV CX,100
A:ADD AX,BX
INC BX
LOOP A
HLT
执行后(BX)=101
2、减法指令
(1)不考虑借位的减法指令SUB
格式: SUB dest, src
操作: dest←(dest)-(src)
指令例子:
SUB AL,60H
(2)考虑借位的减法指令SBB
SBB指令主要用于多字节的减法。
格式: SBB dest, src
操作: dest←(dest)-(src)-(CF)
指令例子:
SBB AX,CX
(3)减1指令DEC
作用类似于C语言中的”--”操作符。
(5)比较指令CMP
格式: CMP dest, src
操作: (dest)-(src)
CMP也是执行两个操作数相减,但结果不送目标操作数,其结果只反映在标志位上。
指令例子:
CMP AL,0AH
2、 乘法指令
进行乘法时: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中
(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不能为立即数;即MUL 10H错误,10H 为立即数
● 除CF和OF外,对其它标志位无定义。
4、除法指令
进行除法时: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
(2)有符号数除法指令IDIV
格式: IDIV src
操作与DIV类似。商及余数均为有符号数,且余数符号总是与被除数符号相同。
注意: 对于DIV/IDIV指令
AX(DX,AX)为隐含的被除数寄存器。
AL(AX)为隐含的商寄存器。
AH(DX)为隐含的余数寄存器。
src不能为立即数。
对所有条件标志位均无定
四、控制转移指令
1、 转移指令
(1)无条件转移指令JMP
格式:JMP label
本指令无条件转移到指定的目标地址,以执行从该地址开始的程序段。
假设(DS)=2000H,(BX)=1256H,(SI)=528FH;位移量TABLE=20A1H,(232F7H)=3280H,(264E5H)=2450H,则
执行指令JMP TABLE[BX]后,(IP)=3280H;
执行指令JMP [BX][SI]后,(IP)=2450H 。
(2)条件转移指令(补充内容)常用指令
① 根据单个标志位设置的条件转移指令
JZ/JE ;结果为零(ZF=1),则转移
JNZ/JNE ;结果不为零(ZF=0),则转移
(2) 段内转移指令执行结果只改变IP的值。
例:有100个字节数据(补码),存放在数据段中EA=2000H的存储单元中。以下程序应该从该数据区中找出最小的一个数据,并存入EA=2100H单元中,请将下面程序补充完整。
MIN: MOV BX,( 2000H )
MOV AL,[BX]
MOV CX,( 99 )
LOOP1: INC BX
CMP AL,[BX]
( JLE ) LOOP2
MOV AL,[BX]
LOOP2: DEC CX
JNZ LOOP1
MOV ( [2100H] ),AL
2、循环控制指令
l用在循环程序中以确定是否要继续循环。
l循环次数通常置于CX中。
l循环控制指令不影响标志位。
(1)LOOP
格式:LOOP label
操作:(CX)-1→CX;
若(CX)≠0,则转至label处执行;
否则退出循环,执行LOOP后面的指令。
LOOP指令与下面的指令段等价:
DEC CX
JNZ label
第四章 8086汇编语言程序设计
一、8086汇编语言的基本语法
1. 汇编语言结构
1)标识符
用来对程序中的变量、常量、段、过程等进行命名,它是组成语句的一个常用成分,它的命名应符合下列规定:
① 合法符号:字母(不分大小写)、数字及特殊符号(“?”,“@”,“_”,“$”,“• ”)。
② 名字必须以字母开头。
① 名字的有效长度不超过31个英文字符。
② 不能把保留字(如CPU的寄存器名、指令助记符等)用作名字。
变量是存储单元的符号地址,这类存储单元的内容可以在程序运行期间被修改。
8、汇编程序的一般结构
DATA SEGMENT
…
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX ,DATA
MOV DS,AX
….
MOV AH,4CH
INT 21H
CODE ENDS
END START
第三节 程序设计
1、 顺序程序的设计
顺序程序:顺序执行的程序称为顺序程序。
特点:每一条指令在执行过程中只被执行一次。
例 :根据算式Z=8X+Y/16-W^2,X、Y、W均为8位无符号数,Z为16位无符号数。
DATA SEGMENT
X DB ?
Y DB ?
W DB ?
Z DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,X
MOV BL,8
MUL BL
MOV DX,AX
MOV AH,0
MOV AL,Y
MOV BL,16
DIV BL
CBW
ADD DX,AX
MOV AH,0
MOV AL,W
MUL AL
SUB DX,AX
MOV Z,DX
MOV AH,4CH
INT 21H
CODE ENDS
END START
2、 分支程序的设计
计算机的一个重要特点在于它能“判断”情况。计算机指令系统中的比较指令、测试指令和条件转移指令等就反映了这种能力。
例如程序设计中经常会遇到判断“相等”和“不相等”、“负”和“正”、“大于”和“小于”、“满足条件”和“不满足条件”等等。这种判断使程序的流程不再是一条顺序执行的直线,而变为由两个或多个分支所组成的倒树型结构,其中每一个分支只有在满足条件时才被执行。
3、 循环程序。
1)循环程序的构成:任何循环程序都可分为循环初始部分、循环体和循环结束部分。
2)循环的类型
循环体的结构依照问题的不同,一般可以分为两种类型:
① 先判断后处理; WHILE-DO
② 先处理后判断。 DO-WHILE
第六章 存储器
一、概述
二、半导体存储器
1. 半导体存储器的分类: (按存取方式)
可分为RAM和ROM。
2、什么是RAM,ROM?RAM和ROM各有什么特点?
三、存储器芯片的扩展
由于单个存储芯片的容量有限,将若干存储芯片进行连接扩展成大容量的存储器,通常有三种方式:位扩展、字扩展、字位扩展
进行字位扩展时,一般先进行位扩展,使构成字长满足要求的内存模块,然后再用若干这样的模块进行字扩展,使总存储容量满足要求。一个存储器的容量为M×N位,若使用P×K位存储器芯片,那么,这个存储器共需要(M/P)×(N/K)个存储器芯片。
8、6166为2Kx8位的SRAM芯片,它的地址线条数为( )。
A) 10
B) 11
C) 12
D) 13
8、使用62256(32K×8位)和28C512(64K×8位),在8086系统最小模式中设计具有256KB RAM、128KB E2PROM的存储体,分别需要( )。
A) 8片62512,4片28C512
B) 4片62512,2片28C512
C) 8片62512,2片28C512
D) 4片62512,4片28C512
第7章 中断技术
一、 中断的基本概念
1、什么叫作中断?中断的过程是什么?
2、 中断的过程可分为中断请求,中断判优,中断响应,中断处理和中断返回。
3、 可屏蔽中断的嵌套原则:中断服务期间禁止同级和较低级的中断请求。
4、8259支持 电平 触发和 边沿 触发两种中断触发方式。
5、8259A应用中,需对IR5,IR3进行屏蔽,操作命令字OCW1应写入28H命令字
6、要禁止8259A的IR0的中断请求,则其中断屏蔽操作指令字OCW1应为( )。
A) 80H B) 28H C) E8H D) 01H
第8章 I/O接口技术
一、接口概述
1、I/O 接口的功能:对输入/输出数据进行缓冲和锁存、对信号的形式和数据的格式进行变换、对I/O 端口进行寻址、提供联络信号等。
2、什么是端口?通常有哪几类端口?
3、8251A芯片的控制字及其工作方式
可编程串行通信接口芯片8251A 在使用前必须进行初始化,以确定它的工作方式、传送速率、字符格式以及停止位长度等,这样就需要有三种控制字,分别为工作方式控制字、操作命令控制字和状态控制字。
(1)工作方式控制字
(2)操作命令控制字
要使8251A处于发送数据或接收数据状态,通知外设准备接收数据或是发送数据,是通过CPU执行输出指令,发出相应的控制字来实现的
(3)状态控制字
CPU通过输入指令读取状态控制字,了解8251A传送数据时所处的状态,做出是否发出命令,是否继续下一个数据传送的决定。状态字存放在状态寄存器中,CPU只能读入状态寄存器,而不能对它写入内容
复位命令
要改变8251A的工作方式,必须先复位,再重新设置方式。8251A有两种复位方式:硬件复位和软件复位。
硬件的方法是从RESET引脚输入一复位信号
软件复位是编程中常采用的方法。软件复位的步骤是:
(1)向控制/状态端口连续写入3个0;
(2)写入控制字40H。
【例】编写使8251A发送数据的程序。将8251A定为异步传送方式,波特率系数为16,采用偶校验,1位停止位,8位数据位。8251A与外设有握手信号,采用查询方式发送数据。设8251A数据端口地址为90H,方式命令状态端口地址为91H。
MOV DX, 91H
MOV AL,0
OUT DX, AL
OUT DX, AL
OUT DX, AL
MOV AL,40H
OUT DX, AL ;复位命令
MOV DX,91H
MOV AL,7EH ;写工作方式控制字
OUT DX,AL
MOV AL,37H ;写操作命令控制字
OUT DX,AL
WAIT∶
IN AL,DX ;读入状态控制字
AND AL,01H
JZ WAIT ;检查RxRDY是否为1
MOV DX,90H
MOV AL,DATA ;输出的数据送AL
OUT DX,AL
12 / 12
展开阅读全文