微机原理基本概念复习.docx
《微机原理基本概念复习.docx》由会员分享,可在线阅读,更多相关《微机原理基本概念复习.docx(24页珍藏版)》请在冰豆网上搜索。
![微机原理基本概念复习.docx](https://file1.bdocx.com/fileroot1/2022-10/28/04f57ea8-dd6d-40fe-8f65-9384ac18ce18/04f57ea8-dd6d-40fe-8f65-9384ac18ce181.gif)
微机原理基本概念复习
微机原理基本概念复习
1、字节,字概念,1字节=8位,
2、字长概念:
传微处理器一次送二进制数据的位数(总线宽度)。
3、地址空间概念:
16根地址线—64K,
20根地址线—1M空间
4、进制间的转换:
将十进制数25.5转换为二级制数
5、数值数据的表示:
有符号数:
补码,n位补码的范围
无符号数:
FFFFH=65535
6、BCD码:
789的压缩BCD码789H
7、ASCII码:
789的ASC码373839H
8、求补运算概念
9、8086CPU从功能上来说分成两大部分:
总线接口单元BIU(BusInterfaceUnit)和执行单元EU(ExecutionUnit)
总线接口部件由下列4部分组成:
①4个段地址寄存器(CS、DS、ES、SS)②16位的指令指针寄存器IP(InstructionPointer)③20位的地址加法器
10辑段概念——
8086CPU的内部结构是16位的,即所有的寄存器都是16位的,而外部寻址空间为1M,需要20位地址线。
为了能寻址1M空间。
8086把1M字节空间划分成若干个逻辑段。
11逻辑地址概念——2000H:
5F62H,则其对应的物理地址:
25F62H
12堆栈指针:
SP与段寄存器SS一起确定在堆栈操作时,堆栈在内存中的位置。
SS和SP的初始值决定了堆栈区的大小
13状态标志的意义:
即SF、ZF、PF、CF、AF和OF
148086引脚:
MN/MX、
AD15~AD0地址/数据分时复用引脚
NMI(Non-MaskableInterrupt)不可屏蔽中断请求,输入、上升沿有效、
INTR(InterruptRequest)可屏蔽中断请求,输入、高电平有效,有效时,表示请求设备向CPU申请可屏蔽中断,该中断请求是否响应受控于IF(中断允许标志)、可以被屏蔽掉
INTA——
RESET(复位)复位请求,输入、高电平有效,复位后CS=FFFFH、IP=0000H,所以自启动程序入口在物理地址FFFF0H
INTA(InterruptAcknowledge)可屏蔽中断响应,输出、低电平有效,有效时,表示来自INTR引脚的中断请求已被CPU响应,CPU进入中断响应周期。
ALE(AddressLatchEnable)地址锁存允许,输出、三态、高电平有效,脚高有效时,表示复用引脚:
AD15~AD0和A19/S6~A16/S3正在传送地址信息,由于地址信息在这些复用引脚上出现的时间很短暂,所以系统可以利用ALE引脚将地址锁存起来
M/IO(InputandOutput/Memory)I/O或存储器访问,输出、三态,该引脚输出高电平时,表示CPU将访问存储器,这时地址总线A19~A0提供20位存储器地址,该引脚输出低电平时,表示CPU将访问I/O端口,这时地址总线A15~A0提供16位I/O口地址
15多字节数据存放方式:
图中0002H“字”单元的内容为:
[0002H]=1234H
0002H号“双字”单元的内容为:
[0002H]=78561234H
16物理地址和逻辑地址的转换
例2.1设代码段寄存器CS的内容为1000H,指令指针寄存器IP
的内容为2500H,即CS=1000H,IP=2500H,则访问代码段
存储单元的物理地址为:
17指令周期:
是指一条指令经取指、译码、读写操作数
基址变址寻址方式MOVAX,[BX+SI]
相对基址变址MOVAX,[BX+DI+6]
隐含寻址
MULBL;(AL)×(BL)→AX隐含了被乘数AL和乘积AX
20存储器寻址方式中的变量
WVARDW1234H
;定义16位变量WVAR,具有初值1234H
21注意点
1.区别立即数寻址和直接寻址
MOVAX,126
MOVAX,[126]
2.区别寄存器寻址和寄存器间接寻址
MOVAX,BX
MOVAX,[BX]
3.双操作数指令中,不能同为存储器操作数。
4.CS不能为目的寄存器。
♦最基本的传送指令(MOV)
♦堆栈指令(PUSH,POP)
♦数据交换指令(XCHG)
♦换码指令XLAT
非法指令的主要现象:
两个操作数的类型不一致
无法确定是字节量还是字量操作
两个操作数都是存储器MOV[2000H],[3000H]
立即数直接送段寄存器MOVDS,3000H
目标操作数用立即数方式MOV2000H,AL
两个操作数都是段寄存器MOVDS,ES
在绝大多数双操作数指令中,目的操作数和源操作数必须具有一致的数据类型,或者同为字量,或者同为字节量,否则为非法指令
两个操作数类型不一致
MOVAL,050AH;非法指令,修正:
;movax,050ah
MOVSI,DL;非法指令,修正:
;movdh,0
;movsi,dx
Ø当无法通过任一个操作数确定是操作类型时,需要利用汇编语言的操作符显式指明
MOV[BX+SI],255;非法指令,修正:
;movbyteptr[bx+si],255
;byteptr说明是字节操作
;movwordptr[bx+si],255
;wordptr说明是字操作
Ø8086/8088指令系统除串操作指令外,不允许两个操作数都是存储单元(存储器操作数)
MOVbuf2,buf1;非法指令,修正:
;假设buf2和buf1是两个字变量
;movax,buf1
;movbuf2,ax
;假设buf2和buf1是两个字节变量
;moval,buf1
;movbuf2,al
Ø8086指令系统中,能直接对段寄存器操作的指令只有MOV等个别传送指令,并且不灵活
MOVDS,ES;非法指令,修正:
;movax,es
;movds,ax
MOVDS,100H;非法指令,修正:
;movax,100h
;movds,ax
MOVCS,[SI];非法指令
;指令存在,但不能执行
例3-13把BLOCK1地址开始的10个字节数据传送到BLOCK2地址开始的10个字节单元处。
MOVCX,10
MOVSI,OFFSETBLOCK1
MOVDI,OFFSETBLOCK2
NEXT:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
DECCX
JNZNEXT
HLT
进栈指令先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部
用堆栈交换AX与CX的值。
pushax
pushcx
popax
popcx
交换指令XCHG(
xchgal,byteptrwvar+1
;ax=5599h,wvar=6611h
;“byteptrwvar+1”强制为字节量,只取高字节与AL类型交换,否则数据类型不匹配
例3-18内存的数据段有一张0~9的平方表,首地址为TABLE,如图所示,用换码指令实现求数字4的平方。
MOVBX,OFFSETTABLE
MOVAL,4
XLAT
加法指令
2、减法指令
3、乘法指令
4、除法指令
加法指令:
ADD,ADC和INC
减法指令:
SUB,SBB,DEC,NEG和CMP
他们分别执行字或字节的加法和减法运算,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位
[例3-32]在数据段从BLOCK开始的存储单元中存放了两个8位无符号数,试比较它们的大小,将较大者传送到MAX单元。
LEABX,BLOCK
MOVAL,[BX]
INCBX
CMPAL,[BX]
JNCDONE
MOVAL,[BX]
DONE:
MOVMAX,AL
HLT
逻辑指令AND、OR、XOR和TEST
屏蔽AL寄存器的低四位。
MOVAL,0FFH11111111
ANDAL,0F0H∧11110000
11110000
例3:
使某数的第4、5位置1。
MOVAL,03H00000011
ORAL,30H∨00110000
00110011
[例3-47]判断DATA单元的数据是否为0。
MOVAX,DATA
ORAX,AX
JZZERO
……
ZERO:
…….
例4:
使某数的D1、D0位取反,其它位不变。
MOVAL,11H00010001
XORAL,03H⊕00000011
=00010010
AND与TEST指令的关系,
同SUB与CMP指令的关系一样
例7:
检测AL中的最低位是否为1,若为1则转移。
MOVAL,data01000001
TESTAL,01H∧00000001
JNZNext00000001
Next:
MOVBL,0
TEST通常用于检测一些条件是否满足,但又不希望改变原来操作数的情况,该指令后通常带有条件转移指令。
移位指令:
移位指令的第一个操作数是指定的被移位的操作数,可以是寄存器或存储单元;后一个操作数表示移位位数:
该操作数为1,表示移动一位
该操作数为CL,CL寄存器值表示移位位数(移位位数大于1只能CL表示)
SALSHLSARSHR
循环移位指令类似移位指令,但要将从一端移出的位返回到另一端形成循环。
分为:
ROLreg/mem,1/CL;不带进位循环左移
RORreg/mem,1/CL;不带进位循环右移
RCLreg/mem,1/CL;带进位循环左移
RCRreg/mem,1/CL;带进位循环右移
循环移位指令按指令功能设置进位标志CF,但不影响SF、ZF、PF、AF标志,OF只当CNT=1时有效,移位后当最高有效位发生变化时(如1变0)OF=1,否则OF=0。
将DX.AX中32位数值左移一位
shlax,1
rcldx,1
控制转移指令
JMPJZJNZ
例3.23判断是否为字母Y
寄存器AL中是字母Y(含大小写),则令AH=0,否则令AH=-1
cmpal,’y’;比较AL与小写字母y
jenext;相等,转移
cmpal,’Y’;不相等,
;继续比较AL与大写字母Y
jenext;相等,转移
movah,-1;不相等,令AH=-1
jmpdone;无条件转移指令
next:
movah,0;相等的处理:
令AH=0
done:
……
[例3-68]在内存中有一个首地址为ARRAY的数据区存放了200个8位有符号数,统计其中正数、负数、0的个数,并分别将统计结果存入PLUS、MINUS和ZERO单元中。
XORAL,AL
MOVPLUS,AL
MOVMINUS,AL
MOVZERO,AL
LEASI,ARRAY
MOVCX,200
CLD
LLAB:
LODSB
ORA