微机原理1Word格式.docx
《微机原理1Word格式.docx》由会员分享,可在线阅读,更多相关《微机原理1Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
高8位数据选择
/RD:
读信号,三态输出,低电平有效。
/RD=0,表示当前CPU正在对存储器或I/O端口进行读操作。
/WR:
写信号,三态输出,低电平有效。
/WR=0,表示当前CPU正在对存储器或I/O端口进行写操作。
DT//R:
数据发送/接收控制信号
DT//R=1,发送数据----写操作;
DT//R=0,接收数据----读操作。
5.微机的主要性能指标:
字长,主频,运算速度,主存容量
6.字长是微处理器一次可以直接处理的二进制数码的位数,它通常取决于微处理器内部通用寄存器的位数和数据总线的宽度。
8086:
16位CPU。
8088:
准16位CPU。
80386,80486,Pentium32位CPU
7奇偶校验:
在通信中将最高位(D7位)用作奇偶校验位。
偶校验:
包括校验位在内的8位二进制数码中1的个数为偶数。
奇校验:
包括校验位在内的8位二进制数码中1的个数为奇数。
例:
字母A的ASCII码为1000001,偶校验码为01000001,奇校验码为11000001。
8.寄存器分组及主要功能P24
8086CPU中有哪些寄存器?
各有什么用途?
包含4组16位寄存器,分别是通用寄存器、指针和变址寄存器、段寄存器、指令指针和标志寄存器
通用寄存器:
4个16位数据寄存器以存放普通数据和地址,也有特殊用途如
AX(AL)用于输入输出指令,乘除法指令;
BX在间接寻址中用作基址寄存器,用来存放偏移地址;
CX在串操作和循环指令中用作计数器,用于控制循环程序的执行次数
DX用于乘除法指令和I/O端口操作等。
指针和变址寄存器:
BP,SP,SI,DI在间接寻址中用于存放基址和偏移地址。
段寄存器:
DS,CS,SS,ES,存放数据段,代码段,堆栈段,附加段的段地址
指令指针寄存器IP:
用来存放将要执行的下一条指令在现行代码段中的偏移地址。
标志寄存器FLAGS:
用来存放运算结果的特征。
9.存储器容量存储容量=存储器单元数×
每单元二进制位数
存储范围计算:
例1(存储器接口分析):
已知一个存储器子系统如下图所示,试指出其中RAM和EPROM的存储容量以及各自的地址范围。
RAM的存储容量为2KB,地址范围为F9000H~F97FFH或
F9800H~F9FFFH。
EPROM的存储容量为4KB,地址范围为FD000H~FDFFFH。
10.汇编语言编程
例1:
当X﹥0时,Y=1;
当X=0时,Y=0;
当X﹤0时,Y=﹣1。
试编写程序完成这一功能。
DATASEGMENT;
段定义语句P119data段名segment+ends
XDB?
;
伪指令DB定义字节变量,DW字变量,DD双字变量
YDB?
伪指令格式:
名字伪指令符操作数;
注释
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA;
段分配语句P120,4个段寄存器分别与哪个段有关,各段段名用段定义segment和ends定义过的段名
START:
MOVAX,DATA;
立即数不能直接传送给段寄存器P62
MOVDS,AX
MOVAL,X
CMPAL,0;
P75比较
JGENEXT1;
P102JGE/JNL:
带符号数大于等于/不小于转移
MOVAL,0FFH;
小于016进制数字以A-F开头前面必加0区别
JMPEXIT
NEXT1:
JENEXT2;
等于0P101JZ/JE:
结果为零/相等转移
MOVAL,1;
大于0
NEXT2:
MOVAL,0
EXIT:
MOVY,AL
MOVAH,4CH;
返回操作系统P127这种方式程序不要写成proc形式只需给出assume语句,接下来直接给出要执行的指令语句start,代码段结束前就可以返回操作系统
INT21H
CODEENDS
ENDSTART;
end:
程序结束语句
例2:
编制计算下面函数的程序(X、Y均为带符号字节数):
当X≥0、Y≥0时,Z=1;
当X、Y均为负数时,Z=-1;
当X、Y异号时,Z=0。
DATASEGMENT
XDB-8
YDB90
ZDB0
DATAENDS
CODESEGMENT
ASSUMECS:
DATA
START:
MOVAX,DATA
CMPX,0
JLL1;
P102JL/JNGE:
小于/不大于等于,X小于0,转L1
CMPY,0
JLL2;
Y小于0,转L2
MOVZ,1;
X、Y均大于或等于0
L1:
CMPY,0
JGEL2;
Y大于等于0,转L2
MOVZ,-1;
X、Y均为负数
L2:
MOVZ,0;
X、Y异号
EXIT:
MOVAH,4CH
CODEENDS
ENDSTART
求两个数的平均值,这两个数分别在X单元和Y单元中,而平均值放在Z单元中。
假定均为字节数,程序如下:
XDB95
YDB87
ZDB?
MAINPROCFAR;
proc+endp过程定义语句
ASSUMECS:
PUSHDS;
P127远过程返回操作系统
XORAX,AX;
P83XOR:
异或,目的使AX=0
PUSHAX
MOVAX,DATA
ADDAL,Y;
P70两数相加,和送AL=X+Y,进位送CF
MOVAH,0
ADCAH,0;
ADC带进位的加法,进位送AH=AH+源+CF
MOVBL,2
DIVBL;
P79源操作数是字节,16位被除数必存放在AX,商在AL,余数在AH
MOVZ,AL
RET
MAINENDP
CODEENDS
ENDMAIN
(1)用条件控制循环(次数已知)
从BUF开始的10个连续单元中存放有10个无符号字节数,找出其中的最大者送入YY单元中。
XXDB71,32,43,64,195,6,87,19,108,8
N=$-XX;
变量个数,循环次数
YYDB?
MOVAL,XX;
al为第一个变量
LEASI,XX;
P67取有效地址指令指向第一个变量
MOVCX,N-1;
CX控制循环次数
LOP1:
INCSI;
P72增量指令源变址指针SI=SI+1指向第二个变量
CMPAL,[SI]
JAELOP2;
JAE高于等于
MOVAL,[SI];
AL用来装比较后,较大的
LOP2:
DECCX;
减量指令CX=CX-1
JNZLOP1;
不为零
MOVYY,AL
MOVAH,4CH
ENDSTART
(2)用条件控制循环
由于无法确定循环次数,但可以用条件来确定循环是否结束。
从自然数1开始计数,直到累加和大于1000为止,统计被累加的自然数的个数,并把统计的个数送入N单元,把累加和送入SUM单元。
DATASEGMENT
NDW?
SUMDW?
MAINPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,0
MOVBX,AX
MOVCX,AX;
AX,BX,CX初始为0
LOP:
INCBX;
增1
ADDAX,BX;
AX为累加和
INCCX;
CX记录累加次数
CMPAX,1000;
累加和小于1000?
JBELOP
MOVN,CX;
累加次数送N单元
MOVSUM,AX
内存中TABLE开始存放0~9的平方值,通过人机对话,当任意给定一个数X(0~9),查表得X的平方值,放在AL中。
程序如下:
P139
TABLEDB0,1,4,9,16,25,36,49,64,81
BUFDB‘Pleaseinputonenumber(0~9):
’,0DH,0AH,’$’;
提示信息
ASSUMECS:
CODE,DS:
START:
MOVAX,DATA
MOVDS,AX;
设置DS
MOVDX,OFFSETBUF;
设置DX,使字符串首地址=DS:
DX
MOVAH,9;
DOS9号功能调用
INT21H;
显示提示信息
MOVAH,1;
键盘输入并显示
INT21H;
1号功能调用,键入数送AL
ANDAL,0FH;
P83逻辑乘(与),AL内存入表内元素序号
MOVBX,OFFSETTABLE;
BX指向表头地址table
MOVAH,0
ADDBX,AX;
表头地址+键入数字,结果存入BX
MOVAL,[BX];
查表得输入数的平方
MOVAH,4CH;
返回DOS
9号功能调用(字符串显示)
MOVDX,待显示字符串首地址
MOVAH,9
功能:
将以‘$’为结束标志的字符串在屏幕上显示。
说明:
(1)执行前要在DS数据段定义一个字符串,该字符串必须在‘$’结尾。
(2)若字符串无‘$’结尾,则在其尾部加一‘$’;
若字符串中间有‘$’,则只能采用2号功能调用逐个字符输出。
1号功能调用(键盘输入并显示)
MOVAH,1
扫描键盘,等待输入,若有键盘按下,则将键值读入并判断是否为Ctrl+Break键,若是,退出;
若不是,则将键值(字符的ASCII码)送AL,同时在CRT上显示该字符
2号功能调用(显示一个字符)
MOVAH,2
MOVDL,待显字符ASCII码
在屏幕上显示字符串“GoodMorning!
”
①标准结构
DATASEGMENT
MESDB‘GoodMorning!
’
DB0DH,0AH,’$’
STACKSEGMENT
ST1DB200DUP(?
);
定义200个字节空间
STACKENDS
MAINPROCFAR
DATA,SS:
STACK
PUSHDS
MOVAX,0;
保护PSP段地址
MOVAX,DATA
MOVDX,OFFSETMES
INT21H
RET;
返回到PSP开始处
MAINENDP
ENDMAIN
11.存储器分类:
课本P155
课件:
一、存储器的分类
1、按存储介质分类
半导体存储器、磁表面存储器、光表面存储器
2、按存储器的读写功能分类
只读存储器(ROM)、随机存储器(RAM)
3、按信息的可保存性分类
非永久性记忆的存储器、永久性记忆的存储器
4、按在微机系统中的作用分类
主存储器、辅助存储器、高速缓冲存储器
12.寻址方式(只对源操作数)书后习题
1、直接寻址方式
形式:
MOVAX,[nn]
MOVAX,X
例:
MOVAL,[2000H](默认数据段DS)
将DS:
2000H单元的内容取一个字节送AL
MOVAX,ES:
[2000H](加段超越前缀表明数据段)
将ES:
2000H单元中的内容送入AX
X必须是数据段中用DB定义的变量
2、寄存器间接寻址
寄存器间接寻址方式的操作数形式为:
[reg]操作数的有效地址包含在基址寄存器BX,基址指针BP或一个变址寄存器(SI或DI)中。
寄存器间接寻址要用方括号括起来,以便与寄存器操作数相区别。
MOVAX,[BX]
将由BX决定的存储单元的内容送到AX寄存器。
物理地址计算方法:
物理地址=(DS)*16+(BX)或(SI)或(DI)
物理地址=(SS)*16+(BP)
课件第115页
13.地址译码三种方式:
全译码方式
(除了将地址总线的低位地址直接连至各存储芯片的地址线外,将所有余下的高位地址全部用于译码,译码输出作为各存储芯片的片选信号。
)
优点:
存储器中每一存储单元都有惟一确定的地址。
缺点:
译码电路比较复杂(相对于部分译码)。
部分译码方式
(只选用地址总线高位地址的一部分(而不是全部)进行译码,以产生各个存储器芯片的片选信号。
片选译码电路比较简单,
存储空间中存在地址重叠区,使用时应予以注意。
线选方式
(将地址总线的高位地址不经过译码,直接将它们作为片选信号接至各存储芯片的片选输入端,即采用线选方式,根本不需要使用片选译码器。
无须使用片选译码器;
存储地址空间被分成了相互隔离的区段,造成地址空间的不连续,给编程带来不便。
14.常用指令集合(循环,跳转)第三章
循环控制指令
(1)LOOP
指令格式:
LOOPLABEL
指令功能:
将CX的内容减1,若CX≠0,则移到LABEL。
(2)LOOPE
LOOPELABEL
CX-1→CX,CX≠0且ZF=1,转移。
(3)LOOPNE
LOOPNELABEL
CX-1→CX,CX≠0且ZF=0,转移。
(4)JCXZ
JCXZLABEL
CX=0,转移。
无条件转移和过程调用:
JMP、CALL、RET
条件转移指令:
比较结果相等:
JZ/JE;
无符号数比较高于:
JA;
高于等于:
JAE;
低于:
JB;
低于等于:
JBE
带符号数比较大于:
JG;
大于等于:
JGE;
小于:
JL;
小于等于:
JLE
15.位扩展:
各存储芯片连接的地址信号、控制信号是相同的,而数据线则分别连接到数据总线的相应位上。
按位扩展法将8片4K×
1位的存储芯片连接扩展成4K×
8位(4KB)存储器的逻辑结构图。
各芯片同时进行相同的操作。
在这种方式中,对存储芯片实际上没有选片的
只进行数据位数的扩展,而整个存储器的字数(存储单元数)与单个存储芯片的字数是
相同的(如本例中两者均为4K)。
在这种连接方式下,地址线的负载数等于芯片数,而数据线的负载数为1。
字扩展:
字扩展法也叫地址串联法。
这种方法将存储器的地址分成两部分,一部分(低位地址部分)接到各存储芯片作为芯片的片内地址,一部分(高位地址部分)经过片选译码器译码后送到各存储芯片的片选输入端;
各存储芯片的数据线中的对应位连接在一起。
用字扩展法将8片2K×
8位的存储芯片连接扩展成16K×
8位的存储器的逻辑结构图。
这种方法进行存储器扩展时,只在字的方向上进行扩充,而存储器的位数不变。
整个存储器的位数等于单个存储芯片的位数。
在这种连接方式下,直接作为片内地址的低位地址线的负载数等于存储芯片数,而参加片选译码的高位地址线的负载数为1;
数据线的负载数也等于芯片数。
从负载角度看,字扩展法不如位扩展法好,但位扩展法中存储器的总容量受芯片容量的限制。
字位扩展
采用字位扩展法,就是既在位方向上进行扩展,又在字方向上进行扩展。
选用8片2K×
1位的存储芯片构成2K×
8位的存储组(位扩展),再用8个这样的存储组构成16K×
8位的存储器(字扩展),整个存储器共计用了64片2K×
1位的存储芯片。
16.串操作的常用寄存器(4个2组)
源操作数由SI间址,在当前数据段DS中;
目的操作数由DI间址,在附加数据段ES中,且不允许段超越。
17.根据程序跳转画出堆栈示意图
TYPE:
取变量或标号的类型属性值。
WORD返回2
OFFSET:
返回变量或标号的偏移地址
LENGTH:
取变量相同类型的个数。
依据数据定义伪指令后第一个表达式的形式而定。
为NDUP(?
)时,取N;
否则取1