微机原理与接口接口技术复习提纲文档格式.docx
《微机原理与接口接口技术复习提纲文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理与接口接口技术复习提纲文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
【Y】补=11101011B
【X+Y】补=【X】补+【Y】补=00100011B
(3)X=-1101001B,Y=-1010110B
【X+Y】补=【X】补+【-Y】补=10010111B+01010110=11101101B
5.译码器
此题答案为Y1,跟课本有不同
第2章微处理器与总线
2.1微处理器包括运算器、控制器、寄存器
2.1.1运算器由算术逻辑单元、通用或专用寄存器、内部总线
2.1.2控制器程序计数器、指令寄存器、指令译码器、时序控制部件、微操作控制部件
2.28088/8086微处理器
2.2.1指令流水线,内存分段管理(了解)
2.2.28088CPU的外部引脚及其功能(要了解最小模式下的方式,最大模式不作要求)
2.2.38088CPU的功能结构包含执行单元EU和总线接口单元BIU
2.2.4内部寄存器(需掌握)
2.2.5存储器的物理地址和逻辑地址、段寄存器
2.38036微处理器(不考查)
2.4奔腾处理器(不考查)
课本习题
2.1微处理器主要组成部分
微处理器包括运算器、控制器、内部寄存器
2.28088CPU中EU和BIU的主要功能,在执行指令时,BIU能直接访问存储器吗?
可以,EU和BIU可以并行工作,EU需要的指令可以从指令队列中获得,这是BIU预先从存储器中取出并放入指令队列的。
在EU执行指令的同时,BIU可以访问存储器,取下一条指令或指令执行时需要的数据。
2.38088CPU工作在最小模式,回答下面的问题
(1)当CPU访问存储器时,要利用那些信号?
WR#(写信号,#表示WR上加一横),RD#读选信号,IO/M#(输入输出存储器控制信号),ALE地址锁存信号、DEN#数据允许信号、DT/R#数据传送信号,地址线AD0-AD7、A8-A19
(2)当CPU访问I/O时,要利用那些信号?
2.4标志寄存器
CF进位标志位。
运算时有进位,CF=1
PF奇偶标志位。
当运算结果的低8位1的个数为偶数时PF=1
ZF零标志位。
运算结果为零时ZF=1
SF符号标志位运算结果的最高位为1时,SF=1
OF溢出标志位运算结果溢出时,OF=1
AF辅助进位,d3向d4进位的时,AF=1
2.58086/8088CPU中,有哪些通用寄存器和专用寄存器,并说明作用
(1)通用寄存器包括
1.数据寄存器AX、BX、CX和DX。
它们一般用于存放参与运算的数据或运算的结果。
AX主要存放算术逻辑运算中的操作数,并存放I/O操作的数据
BX存放访问内存的基地址
CX在循环和串操作指令中用作计数器
DX在寄存器间接寻址的I/O指令中存放I/O地址。
在做双字长运算时,DX与AX合起来存放一个双字长
2.地址寄存器SP、BP、SI和DI。
SP存放栈顶偏移地址,BP存放访问内存时的基地址。
SP和BP也可以存放数据,但它们的默认段寄存器都是SS。
SI和DI常在变址寻址方式中作为索引指针。
(2)专用寄存器包括
1.段寄存器CS、DS、ES和SS
2.控制寄存器IP、FLAGS。
Ip是指令指针寄存器,FLAGS标志寄存器
2.68086/8080CPU中,物理地址和逻辑地址,逻辑地址为1F00:
38A0H,物理地址多少,已知物理地址,逻辑地址唯一吗?
不唯一,逻辑地址为1F00:
38A0H,物理地址=1F00*16+38A0H=228A0H。
1.某微机的最大可寻址的内存空间为16MB,其CPU地址总线至少应有(D)条
A.32B.16C.20D.24
2.8086CPU外部的地址总线和数据总线分别为(B)位
A.16,16B.20,16C.16,8D.20,20
3.8086CPU在进行对外设输出操作时,控制信号
和
必须是(D)
A.0,0B.0,1C.1,0D.1,1
控制IO是搞电平,对外输出
高电平,见教材P41
4.决定计算机指令执行顺序的寄存器是,它总是指向。
5.8088CPU内的堆栈是一种特殊的数据存储区,堆栈操作是字操作(字/字长)其存取采用先进后出的原则(先进先出/先进后出),它由SP作地址指针管理。
(SP/BP)
判断
1.8086/8088允许各个逻辑段重叠和相邻。
(正确)
2.8086CPU在读入数据前,其
线变为高阻状态(正确)
填空题
完成下列各式补码数的运算,并根据结果设置标志SF、ZF、CF和OF,指出运算结果是否溢出。
(1)00101101B+10011100B=11001001BSF=1(最高位为1,结果为负),ZF=0(结果不全为0),CF=0(没有进位),OF=0(没有溢出),结果没有溢出。
(2)01011101B-10111010B这两个数都是补码,
【Y】补=10111010B【Y】反=11000101B【Y】真值=-1000101B【-Y】补=01000110B
【01011101B】补码+【01000110B】补码=1010011B
结果最高位为1,为负数,所以SF=1,ZF=0,(结果不全为0)CF=1(有借位或进位)OF=1,表示有溢出。
第3章指令系统
3.1指令格式
操作码存放运算数据或结果的地址(目标操作数)参加运算的数据或数据的地址(源操作数)
3.2寻址方式
3.2.1立即寻址MOVAX,3102H源操作数是立即操作数
3.2.2直接寻址MOVAX,【3102H】参加运算的数据存放在内存中,存放的地址由指令直接给出
3.2.3寄存器寻址MOVSIAX
3.2.4寄存器间接寻址MOVAX【SI】
3.2.5寄存器相对寻址MOVDADT【BX】注意p99页的例
3.2.6基址—变址寻址MOVAX,【BX】【SI】寻址方式由BX和BP的内容与SI和DI的内容相加而形成操作数的偏移地址。
3.2.7基址—变址寻址MOVAX,5【DI】【BX】,偏移地址=BX+DI+5
3.2.8隐含寻址
3.38086指令系统
3.3.1数据传送指令
3.3.1.1一般传送指令MOV
堆栈指令PUSH和POP
交换指令XCHG
查表转换指令XLAT(不作要求)
3.3.1.2输入/输出指令IN和OUT指令注意只有AX或AL才与I/O端口进行数据交换
INAL,DX
OUT44H,AX
3.3.1.3取偏移地址指令LEA
3.3.2算术运算指令
3.3.2.1加法运算指令
普通加法指令ADD
带进位的加法指令ADC
累加指令INC
3.3.2.2减法指令
不考虑借位减法指令SUB
考虑借位的减法指令SBB
累减指令DEC
求补指令NEG
比较指令CMP
3.3.2.3乘法指令(了解)
3.3.2.4除法指令(了解)
3.3.3逻辑运算和移位指令
与指令AND
或指令OR
非指令NOT(取反)
异或指令XOR
测试TEST指令(了解)
移位指令(了解)
3.3.4串操作指令
3.3.4.1串操作指令的共同特点
3.3.4.2重复操作前缀REP无条件重复前缀
3.3.4.3串操作指令:
MOVS;
CMPS;
SCANS;
SCANS;
STOS;
3.3.5程序控制指令
3.3.5.1JMP无条件转移指令,注意教材P131页例题
3.3.5.2有条件转移指令P132了解几个常见的条件转移指令,比如JZ,JA等
3.3.5.3循环指令LOOP
3.3.5.4过程调用指令:
CALL;
返回指令RET
3.3.5.5中断指令INT(不考查)
3.3.6处理器控制指令CLC清进位标志(了解)
3.1设DS=6000H,ES=2000H,SS=1500H,SI=00A0H,BX=0800H,BP=1200H,字符常数VAR为0050H,分别计算出下列源操作数的物理地址
(1)MOVAX,VAR【BX】【SI】源地址=DS*16+SI+BX+VAR=608F0H
(2)MOVDX,ES:
【BX】源操作数的地址为ES*16+BX=20800H
(3)MOVBX,20H【BX】源操作数的地址为DS*16+BX+20H=60820H
3.2假设DS=212AH,CS=0200H,IP=1200H,BX=0500H,位移量DATA=40H,【217A0H】=2300H,【217E0H】=0400H,【217E2H】=9000H,试确定下列转移指针的转移地址。
(1)JMPBX段内转移,转移目标物理地址=CS*16+BX=02500H
(2)JMPWORDPTR[BX]段内间接转移地址=CS*16+[BX]=02000H+[212A0H+0500H]=04300H
(3)JMPDWORDPTR[BX+DATA]
段间转移地址=[BX+DATA]=[DS*16+BX+DATA+2]*16+[DS*16+BX+DATA]=90400H
3.3判断下列指令是否正确,有错则指正
(1)MOVAH,CX错,两个操作数字长不一致,
(2)MOV33H,AL错,目标操作数不能为立即数
(3)MOVAX,[SI][DI]错,间接寻址中不允许两个间址寄存器同时为变址寄存器
(4)MOV[BX],[SI]错,两个操作数不能同时为存储器操作数
(5)ADDBYTEPTR[BP],256错,ADD指令要求两个操作等字长
(6)MOVDATA[SI],ES:
AX错,源操作数形式错,
(7)JMPBYTEPTR[BX]错,转移指令地址至少要16位
(8)OUT230H,AX错,当端口地址超出8位二进制的表达范围,必须采用间接寻址
(9)MOVDS,BP指令准确
(10)MUL39H错,乘法指令不允许操作数为立即数。
3.4已知AL=7BH,BL=38H,试问执行指令ADDAL,BL后,AF、CF、OF、PF、SF和ZF各为多少。
解答:
01111011+00111000=10110011
运算时最高位向前有进位,CF=1;
;
本题没有,CF=0;
当运算结果的低8位1的个数为偶数时PF=1;
结果中低8位1的个数为5,故PF=0
运算结果为零时ZF=1;
显然不为零,ZF=0
SF符号标志位运算结果的最高位为1时,SF=1;
确实如是,故SF=1;
OF溢出标志位运算结果溢出时,OF=1;
所以对于有符号数的相加,本题OF=1;
AF辅助进位,d3向d4进位的时,AF=1,本题确实有,故AF=1,
---以上需要会判断,如果考会将每个的说明先提示出来,只作判断
3.5按下列要求写出相应的指令或程序段
(1)写出两条使得AX内容为0的指令
(2)使得BL寄存器中的高4位和低4位互换
(3)屏蔽CX寄存器中的D11、D7和D3位,也就是使得这3位出来信号固定为0,其余不变
(4)测试DX中的D0位和D8位是否同时为1
(1)MOVAX,0或XORAX,AX;
异或逻辑运算
(2)MOVCL,4
ROLBLCL循环左移4位
(3)ANDCX,F777H;
与运算这个数为1111011101110111,故为F777H
(4)ANDDX0101H;
与运算这个数为0000000100000001,故为F777H
CMPDX0101H;
比较
JZONE;
若相等,则表示D0和D8位同时为1
3.6已知AX=8060H,DX=03F8H,端口PORT1的地址为48H,内容为40H;
PORT2的地址为84H,内容为85H,请指出下列指令执行后的结果
(1)OUTDX,AL;
AX=8060H,则AL=60H为内容输出到03F8H为地址的端口
(2)INAL,PORT1;
从地址为48H,读入一个字节,结果AL=40H
(3)OUTDX,AX;
将AX=8060H为内容,输出到地址为03F8H的端口
(4)INAX,48H;
从地址48H读入一个内容为16位二进制数
(5)OUTPORT2,AX;
将8060H输出到地址为85H的端口
3.7完成下列功能的程序段
(1)从地址为DS:
0012H的存储单元中传送一个数据56H到AL寄存器
(2)AL的内容与字节单元DS:
0013H的内容相乘
(1)MOVBYTEPTR[0012H],56H
MOVAL,[0012H]
(2)MULBYTEPTR[0013H]
3.1下列指令,正确的是(D)
A.MOVAL,1000B.MOV100,ALC.MOVAL,100HD.MOVAL,100
3.2假设AL=3,要使得AL=0CH,应执行的指令是(C)
A.NOTALB.ANDAL,0FHC.XORAL,0FHD.ORAL,0FH
3.3阅读程序段,请在注释中填写指令的结果
BUFDW4105;
伪指令,定义一个字变量BUF,它的内容为4105H。
MOVAL,BYTEPTRBUF;
AL=05H取BUF变量的低字节05H到AL中,由此AL=05H
MOVAH,8传送指令,AH=8
MULAH执行后AH=00H,AL=28H;
将AH*AL=08H*05H=28H结果送入AX,默认被乘数在AL中。
3.4将下列程序补充完整,程序的功能是在数据段ADDR1地址处有200个字节,要传送到数据段地址ADDR2处。
MOVAX,SEGADDRI;
取ADDRI所在的段地址
MOVDS,AX;
取AX的内容传送给DS,
MOVES,AX;
取AX的内容传送给ES,
MOVSI,OFFSETADDR1;
取源偏移地址,也就是ADDR1的偏移地址
MOVDI,OFFSETADDR2;
取目标操作数的偏移地址;
MOVCX,200;
将传送的个数赋给计数器寄存器CX
CLD;
清零传送方向
REPMOVSB;
串传送操作,是对字节进行的,故MOVSB
3.5写出一条能完成下述操作的指令
(1)将AX的高字节清零,低字节不变。
ANDAX,00FFH
(2)将CX的中间8位清零,其余位不变。
XOR0FF0H
第4章汇编语言
4.1汇编语言
4.1.1汇编语言结构
一个完整的汇编语言源程序通常由若干个逻辑段组成,包括数据段、附加段、堆栈段和代码段,分别银蛇到存储器的物理段上。
每个逻辑的段以SEGMENT语句开始,以ENDS语句结束,整个源程序用END语句结束
4.1.2汇编语言语句类型及格式
指令性语句和指示性语句
指令性语句由指令助记符等组成的可被CPU执行的语句,指示性语句只是告诉汇编程序如何对程序进行汇编,CPU不执行指令,不生成目标代码,成为伪操作和伪指令。
指令性语句的一般格式
【标号:
】【前缀】操作码【操作数】【,操作数】【;
注释】
指示性语句的一般格式为
【名字】伪操作操作数【,操作数,……】【;
加【】是可选项,不一定要
4.1.3汇编语言数据项及表达式
操作数可以是寄存器、存储器单元或数据项,而数据项又可以是常量、标号、变量和表达式。
(1)常量:
数字常量,字符串常量(比如‘B’或ASCII码)两种。
(2)符号:
只是程序员定义的一个符号
(3)变量:
变量类型有BYTE(字节)、WORD(字)、DWORD(双字)等,表示数据区中存取操作对象的大小。
(4)表达式
算术运算符
逻辑运算
关系运算符
取值运算符和属性运算符
A.OFFSET得到一个符号或变量的偏移地址
B.SEG得到一个标号或变量的段地址
C.PTR属性运算符用来指定位于其后的存储器操作数的类型
例如MOVAL,BYTEPTRVAR;
BYTEPTR指令将变量VAR变为字节操作数,PTR只对当前指令有效。
其他运算符比如[]里面是操作数的偏移地址段重设运算符“:
”
4.2伪指令不会产生目标代码
4.2.1数据定义伪指令
1.数据定义伪指令
数据定义伪指令用来定义变量的类型、给变量赋初值或给变量分配存储空间。
[变量名]伪操作操作数,
2.操作数
3.重复操作符
比如DATA1DB11H,22H,33H
DATA2DB20DUP(?
)
4.2.2符号定义伪指令
4.2.3段定义伪指令
段名SEGMENT[定位类型][组合类型][‘类别’]
……
段名ENDS
4.2.4设定段寄存器的伪指令
ASSUME段寄存器名:
段名[,段寄存器名:
段名[,……]]
CODESEGMENTPARAPUBLIC‘CODE’
ASSUMECS:
CODE,DS:
DATA,ES:
EDATA,SS:
STACK
4.2.5过程定义伪指令
过程名PROC[NEAR/FAR]
RET
过程名ENDP
4.2.6宏定义伪指令(了解)
4.3BIOS和DOS功能调用
4.3.1BIOS的调用(不考查)
4.3.2DOS的调用
键盘输入
MOVAH,1;
有键盘输入,功能号1送(AH),输入单个字符。
INT21H;
当按下键后,返回AL=字符的ASCII码
MOVAH,0AH;
显示器输出
MOVDL,<
要显示的字符>
;
要显示的字符必须放在DL中
MOVAH,2;
功能号送AH
执行系统功能调用
MOVDL,[BX];
返回到DOS
MOVAH,4CH
INT21H
4.4汇编程序设计要求能看懂一些程序,并不是不重要。
课后试题
4.1请分别用DB、DW、DD伪指令写出在DATA开始的连续8个单元中依次存放数据11H、22H、33H、44H、55H、66H、77H、88H的数据定义语句。
DATADB1H,22H,33H,44H,55H,66H,77H,88H
DATADW2211H,4433H,6655H,8877H
DATADD44332211H,88776655H
4.2若程序的数据段定义如下,写出各指令语句执行后的结果
DSEGSEGMENT
DATA1DB10H,20H,30H
DATA2DW10DUP(?
STRINGDB‘123’
DSEGENDS
(1)MOVAL,DATA1;
取变量DATA1的值。
指令执行后AL=10H
(2)MOVBX,OFFSETDATA2;
取变量DATA2的偏移地址。
指令执行后,BX=0003H。
(3)LEASI,STRING;
取变量STRING的偏移地址送寄存器SI,
ADDBX,SI;
将SI的内容(也就是STRING的地址0017H=23)与BX的内容(DTATA2的地址0003H)相加并将结果送BX。
指令执行后,SI=001AH
4.3试编写求两个无符号32位数之后的程序。
两数分别在MEM1和MEM2单元中,其和放在SUM单元。
MEM1DW1122H,3344H
MEM2DW5566H,7788H
SUMDW2DUP(?
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG
START:
MOVAX,DSEG
MOVDS,AX
LEABX,MEM1;
取MEM1的偏移地址
LEASI,MEM2;
取MEM2的偏移地址
LEADI,SUM;
取SUM的偏移地址
MOVCL,2;
为什么要重复2次;
寄存器是16位,但相加的是32位的数,
CLC
AGAIN:
MOVAX,[BX]
ADCAX,[SI];
将MEM1和MEM2的内容相加,放在AX内。
MOV[DI],AX
ADDBX,2;
为什么要加2,将地址移两位。
每个单元只存放1字节。
ADDSI,2
ADDDI,2
LOOPAGAIN;
重复调用
HLT
CSEGENDS
ENDSTART
考查时,一般不会要求写完整的程序,但是要求补充其中的内容。
比如此题中的划线部分。
4.7执行下列指令后,A