微机原理复习第1学期.docx
《微机原理复习第1学期.docx》由会员分享,可在线阅读,更多相关《微机原理复习第1学期.docx(19页珍藏版)》请在冰点文库上搜索。
微机原理复习第1学期
微机原理及应用复习提纲
第1章微机基础
1、计算机中所有的信息都是以二进制数的形式存储的。
2、常用的进位计数制及相互转换。
3、计算机中常用的编码:
BCD码、ASCII码
(1)BCD码:
二进制编码的十进制数。
(组合)BCD码用4位二进制码来表示一位十进制数。
注意:
BCD码与二进制的区别,BCD码不能直接转换成二进制数,必须先将BCD码转换为十进制数后,再转换成二进制数。
(2)ASCII码(美国标准信息代码):
一种最常用的字符信息编码,用7位二进制数进行编码。
记住常用ASCII码:
如0~9,A~F、a~f等。
5、带符号数的表示:
原码、反码、补码及转换。
8位二进制数能表示的原码、补码的范围。
6、计算机的五大部分组成。
7、微机总线结构:
CPU、存储器和I/O接口等部件通过总线连接。
根据传送信息的类型,微机的三大系统总线AB、CB、DB。
8、intel8086微处理器的结构
(1)40DIP封装,16位CPU,16位数据线;20根地址线
(2)CPU的编程结构:
内部寄存器都是16位,主要包含:
AX/BX/CX/DX/SP/BP/SI/DI/IPCS/DS/SS/ES、标志寄存器FLAG等。
其中AX/BX/CX/DX能作为8个8位寄存器用。
(3)CPU的功能结构:
两大功能单元EU和BIU。
EU负责指令的执行,BIU负责与总线相关的操作。
(4)存储器组织:
20根地址线决定了8086存储器的寻址能力是1MB,地址范围:
00000H~FFFFFH。
存储单元地址的两种表示形式:
物理地址、逻辑地址。
物理地址用20位二进制数表示,它是唯一的;逻辑地址用“段地址:
偏移地址”的形式表示,它是相对地址,并不唯一。
物理地址=逻辑地址中的段地址*10H+逻辑地址中的偏移地址
8086CPU对内存采用“分段管理机制”,每段最大可达64KB(段地址确定时,偏移地址的变化范围),段和段之间可以重叠。
(5)标志寄存器中各个标志位的含义。
第2章8086指令系统
1、寻址方式
(1)汇编指令包含两部分:
操作数和操作码。
(2)各种寻址方式的区别与应用。
8086CPU共有三大类寻址方式:
立即寻址、寄存器寻址和存储器寻址(又可分为:
直接寻址、寄存器间接寻址、变址寻址、基址加变址寻址)。
判断寻址方式,如MOVAX,1234H指令中目的操作数是寄存器寻址,源操作数是立即寻址。
2、指令系统:
熟练掌握常用指令的功能、格式及应用。
传送指令:
MOV、PUSH、POP、IN、OUT、XCHG、XLAT、LEA
算术运算指令:
ADD/ADC、INC、SUB/SBB、DEC、NEG、CMP、MUL/IMUL、DIV/IDIV、AAA/DAA、AAM(BCD码调整指令只考加法和乘法调整指令)
逻辑运算指令:
AND、OR、XOR、TEST、SHR、SHL、SAR、SAL、ROR、ROL、RCR、RCL
控制转移指令:
JMP、JX(所有条件转移指令)
循环控制指令:
LOOP、LOOPNZ、LOOPZ
常见考试题型1:
读懂程序段,给出执行结果。
例如
MOVAX,0
ADDAX,1
执行上述2句指令后,(AX)=1
考试题型2:
判断指令格式是否正确。
例如:
MOVCS,AX是否正确?
错,因为CS不能用MOV修改。
参考课本习题2-3。
考试题型3:
编写程序段或程序填空。
第3章8086汇编语言程序设计
1、常用汇编伪指令。
数据定义和分配数据单元的伪指令DB/DW/DD、DUP、OFFSET
2、三种基本结构程序设计:
顺序结构、分支结构、循环结构。
参考课件例题和练习题。
考试题型1:
程序填空。
如:
下列程序实现1+2+3+……+100,根据要求,请完成程序填空。
考试题型2:
编程题。
如编写程序实现1+2+3+……+100。
课件或课本重点例题
1.设CPU的字长为8位。
(有符号数的表示)
X=123,则[X]原=01111011;[X]反=01111011;[X]补=01111011;
Y=-123,则[Y]原=11111011;[Y]反=10000100;[Y]补=10000101。
2.若CS=FFFFH,IP=0000H,则指令所在存储单元的物理地址为:
PA=(CS)×10H+IP=FFFF0H
3.十进制数转换成二进制数:
(1)58
(2)67
4.二进制数转换成十进制数
(1)10110B
(2)11010B
5.指出下列指令中源操作数的寻址方式,并求出其对应存储器操作数的物理地址。
假设:
(DS)=3000H,(ES)=2000H,(SS)=2500H,(SI)=0900H,(BX)=0100H,(BP)=0008H,数据变量DATA的偏移地址为0050H。
(1)MOVAX,0ABH
(2)MOVAX,[100H]
(3)MOVBX,[SI]
(4)MOVAL,DATA[BX](5)MOVCL,[BX][SI]
(6)MOVDATA[SI],BX(7)MOVBX,[BP][SI]
6.设有关寄存器及存储单元的内容如下:
(DS)=4000H,(BX)=0200H,(AX)=1200H,(SI)=0002H,(40200H)=12H,(40201H)=34H,(40202H)=56H,(40203H)=78H,(41200H)=2AH,(41201H)=4CH,(41202H)=0B7H,(41203H)=65H
试说明单独执行下列各条指令后,相关寄存器或存储单元内容的变化。
(1)MOVAX,1800H
(2)MOVDX,BX
(3)MOVBX,[1200H](4)MOVAX,1000H[BX]
(5)MOV[BX][SI],AL(6)MOVCL,1000H[BX][SI]
7.设SS=2000H,SP=0040H,BX=2340H,执行:
PUSHBX
则执行后,2340H被保存到堆栈,(2003EH)=40H,(2003FH)=23H,同时SP=003EH,BX内容不变。
8.设有SS=3200H,SP=07FEH,(327FEH)=22H,(327FFH)=11H,执行:
POPBX
则执行后,SP=0800H,BX=1122H
9.说明下列程序段的功能。
MOVAX,1234H
PUSHAX
MOVBX,5678H
PUSHBX
POPAX
POPBX
10.已知十进制数0~9的七段LED显示码对照表如下表所示。
试用XLAT指令求数字6的七段显示码。
十进制数的七段显示码
十进制数字
七段显示码
十进制数字
七段显示码
0
1
2
3
4
40H
79H
24H
30H
19H
5
6
7
8
9
12H
02H
78H
00H
18H
程序:
TABLEDB40H,79H,24H,30H,19H
DB12H,02H,78H,00H,18H
┆
MOVAL,6;数字6的位移量送AL
MOVBX,OFFSETTABLE;表格首址送BX
XLATTABLE
11.对两个8位16进制数7EH和5BH求和,并分析加法运算指令执行后对标志位的影响。
MOVAL,7EH;(AL)←7EH
ADDAL,5BH;(AL)←7EH+5BH
结果:
(AL)=0D9H,进位标志(CF)=0,零标志(ZF)=0,符号标志(SF)=1,奇偶标志(PF)=0,辅助进位标志(AF)=1。
12.设有两个4字节的无符号数相加,这两个数分别放在2000H和3000H开始的存储单元中,低位在前,高位在后。
要求进行运算后,得到的和放在2000H开始的单元中。
MOVSI,2000H
MOVDI,3000H
MOVAX,[SI]
ADDAX,[DI]
MOV[SI],AX
MOVAX,[SI+2]
ADCAX,[DI+2]
MOV[SI+2],AX
13.MOVAL,7FH
NEGAL
执行结果:
AL=7F按位求反+1=80H+1=81H
14.MOVAL,14H;AL=14H
MOVCL,05H;CL=05H
MULCL;AX=0064H,CF=OF=0
结果的高半部分AH=0,因此,状态标志位CF=OF=0。
15.MOVAH,0
MOVAL,00000110B;代表6
ADDAL,00000111B;代表7
AAA
最后结果:
AH=01H,AL=03H
16.MOVAL,00100111B;代表27
ADDAL,10000110B;代表86
DAA
调整后结果:
CF=1,AL=00010011B
17.MOVAL,05H
MOVBH,06H
MULBH;AX=001EH
AAM;AX=0300H
18.检测CX的内容是否为0,若为0则转移;
TESTCX,0FFFFH
JZP1
…
P1:
…
19.MOVBL,10001001B
SALBL,1
结果:
CF=1,BL=00010010B,OF=1
20.将AL中的数x乘以10。
10x=2x+8x
SALAL,1;(AL)=2x
MOVBL,AL;暂存BL
MOVCL,2;(CL)←移位次数
SALAL,CL;(AL)=8x
ADDAL,BL;(AL)=10x
21.设CF=1,AL=10110110B,则:
执行指令ROLAL,1后,
AL=01101101B,CF=1,OF=1;
执行指令RCLAL,1后,
AL=01101101B,CF=1,OF=1;
执行指令RORAL,1后,
AL=0101101lB,CF=0,OF=1;
执行指令RCRAL,1后,
AL=11011011B,CF=0,OF=0;
执行指令MOVCL,3及RCLAL,CL后,则
AL=10110110B,CF=1,OF不确定。
22.MOVAX,0123H
MOV[0000],AX
MOVWORDPTR[0002],0
JMPDWORDPTR[0000]
执行上述程序段后,(CS)=0000H,(IP)=0123H
23.课本P42【例2-1】数据传送
设DS=3000H,起始偏移地址为0100H内存区域中顺序存放着100个字节的数据。
要求传送到以2000H为起始偏移地址的区域。
利用寄存器间接寻址来寻找操作数。
MOVAX,3000H
MOVDS,AX;建立数据段
MOVSI,0100H;建立源数据指针
MOVDI,2000H;建立目的地指针
MOVCX,100;设置计数器
NT:
MOVAL,[SI];取数
MOV[DI],AL;送数
INCSI;调整指针
INCDI
DECCX;计数器减1
JNENT;CX不等于0则转NT标号
INT20H;返回DOS
24.课本P59【例2-7】求符号数的最大值。
设数据区1000H开始的区域中存放着50个字节的符号数。
要求找出其中最大的一个数并存到0FFFH单元。
MOVBX,1000H
MOVAL,[BX]
MOVCX,31H
L1:
INCBX
CMPAL,[BX]
JGEL2
MOVAL,[BX]
L2:
DECCX
JNEL1
MOVBX,0FFFH
MOV[BX],AL
INT20H
25.利用LOOP指令,编程实现1+2+3…+100的总和。
方法一:
方法二:
26.说明下列程序段执行后,AX和CX寄存器的值为多少?
SUBAX,AX
SUBCX,CX
LP:
INCAX
LOOPLP
27.假定AX、BX寄存器中的内容是有符号数,用比较指令和转移指令分别实现:
(1)若BX的内容大于AX的内容,转去执行GREAT;
(2)若BX的内容小于AX的内容,转去执行LESS;
(3)若BX的内容为0,则转去执行ZERO;
28.P84课后练习2-3
对8088/8086CPU指出下列指令中哪些是错误的并说明原因。
(1)MOVBL,AX
(2)MOV100,CX
(3)MOV[SI],AX(4)MOVCS,AX
(5)MOV[SI],BUFFER(6)OUT541H,AL
(7)INBL,DX(8)LEABX,AX
(9)MOVBX,2[DI](10)XCHGAL,100
(11)MOVBYTEPTR[BX],1000(12)MOVAX,[BP+4]
(13)MOVAX,CS(14)MOVSS,2400H
29.P87课后练习2-6
将共阳LED显示器所用BCD码数字0~~9的七段码列成一张表,从10H号外设端口读入0~~9的ASCII码,将它转换为七段码后输出到20H号端口去。
写出完成上述任务的指令序列。
MOVBX,OFFSETTABLE;BX指向表首址
INAL,10H
SUBAL,30H
XLATTABLE
OUT20H,AL
TABLEDB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H
30.P87课后练习2-9
设a,b,c,d是互不相等的8位带符号数(补码),并假设加减法运算均不产生溢出。
试写出完成下列运算的程序段,结果放在DX和AX中。
(1)(a+b)/(c-d)
MOVAL,a
ADDAL,b
CBW
MOVBL,c
SUBBL,d
IDIVBL
(2)(a+b)*(c-d)
MOVAL,a
ADDAL,b
MOVBL,c
SUBBL,d
IMULBL
31.P87课后练习2-12
试将Buffer起始的50个字节的组合BCD数字转换成ASCII码存放于ASC为起始地址的单元中,高位BCD数字位于较高地址。
LEASI,Buffer
LEADI,ASC
MOVCX,50
L1:
MOVAL,[SI]
ANDAL,0FH
ORAL,30H
MOV[DI],AL
MOVAL,[SI]
PUSHCX
MOVCL,4
SHRAL,CL
POPCX
ORAL,30H
INCDI
MOV[DI],AL
INCDI
INCSI
LOOPL1
INT20H
32.P87课后练习2-13
给以TAB为首的100个ASCII码字符添加奇偶校验位(bit7)使每个字节中的“1”的个数为偶数,再顺序输出到10H号端口。
MOVSI,OFFSETTAB
MOVCX,100
L2:
MOVAL,[SI]
ANDAL,0FFH
JPL1
ORAL,80H
L1:
OUT10H,AL
INCSI
LOOPL2
INT20H
33.顺序结构
编写程序段,完成下面公式的计算(其中:
变量X和Y是32位无符号数,变量A,B和Z是16位无符号数):
(X-Y-29)/Z的商→A,(X-Y-29)/Z的余数→B
DATASEGMENT;定义数据段
XDD453921F0H
YDD123A6825H
ZDW0A86CH
ADW?
BDW?
DATAENDS
CODESEGMENT;定义代码段
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,X;取X的低位字
SUBAX,Y;与Y的低位字相减
MOVDX,X+2;取X的高位字
SBBDX,Y+2;与Y的高位字相减,并考虑低位的借位
SUBAX,29D;结果的低位与29D相减
SBBDX,0;可能产生借位,再减去借位
DIVZ;32位无符号数(DX:
AX)除以16位无符号数Z
MOVA,AX;商在AX中,保存商
MOVB,DX;余数在DX中,保存余数
MOVAH,4CH
INT21H;返回DOS
CODEENDS
ENDSTART
34.分支结构
试编写程序段,实现符号函数。
相应的程序段为;
SIGN:
MOVAX,X;
ANDAX,AX;做一次“与”运算,以把X的特征反映到标志位
MOVBX,0;预置X=0的标志0到BX
JENEXT;若X确实为0,则转NEXT
JNSPLUS;X为正数,则转PLUS
MOVBX,-1;X为负数,则-1送BX
JMPNEXT
PLUS:
MOVBX,1
NEXT:
MOVY,BX
35.循环结构
统计字变量VAL中0和1的个数,并将统计结果分别送字单元X和Y中。
分析:
每次将最高位移入CF中进行测试,若为0,则X单元加1;若为1,则Y单元加1。
一个字有16位,故有16次循环。
MOVCX,16;16次循环
MOVSI,0;SI中存放0的个数
MOVDI,0;DI中存放1的个数
MOVAX,VAL
AGAIN:
SHLAX,1
JCNOZERO;为1,转走
INCSI;为0,SI加1
JMPNEXT
NOZERO:
INCDI;为1,DI加1
NEXT:
LOOPAGAIN
MOVX,SI
MOVY,DI
36.编程实现Z=X+Y,其中X、Y、Z均为32位无符号数。
DATASEGMENT
XDD453921F0H
YDD123A6825H
ZDD?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,X;取X的低位字
MOVDX,X+2;取X的高位字
ADDAX,Y;与Y的低位字相加
ADCDX,Y+2;与Y的高位字相加,并考虑低位的进位
MOVZ,AX;保存低位字的相加结果
MOVZ+2,DX;保存高位字的相加结果
MOVAH,4CH
INT21H;返回DOS
CODEENDS
ENDSTART
练习题
1.中央处理单元CPU主要由________和________构成,用来解释指令并进行运算。
2.8421BCD码有十个不同的数字符号,逢十进位,每位BCD码用___________位二进制数表示。
3.微型计算机中,CPU重复进行的基本操作是__________、__________、__________。
4.在一般微处理器中,__________________包含在中央处理器(CPU)内。
A.算术逻辑单元B.主内存 C.输入/输出单元
5.IP寄存器的作用是用来指示______________
A.栈顶地址B.栈底地址 C.下一条要执行的指令的地址
6.计算机能直接认识、理解和执行的程序是_________
A.汇编语言程序B.机器语言程序C.高级语言程序
7.计算机内的“溢出”是指其运算的结果_________
A.为无穷大B.超出了计算机内存储单元所能存储的数值范围
C.超出了该指令所指定的结果单元所能存储的数值范围
8.已知(DS)=1000H,(SS)=2000H,(SI)=007FH,(BX)=0040H,变量VAL的偏移地址为0100H,请指出下列指令的源操作数字段是什么寻址方式?
它们的有效地址(EA)和物理地址(PA)分别是多少?
(1)MOVAX,[2468H]
(2)MOVAX,VAL[BX][SI]
9.两个十六进制数7825H和5A1FH相加后,运算结果是_______________,各标志位的值是CF=______,ZF=______,SF=______,OF=______。
10.8086CPU有______条地址线,可形成______的存储器地址空间,地址范围为__________________;
11.阅读程序段,画出内存分配图。
XDB0,1
YDB2DUP(0,1)
VWORDDW1234H
DVARDD12345678H
12.完成下列数制的转换,将正确的答案填在每小题后的括号内。
(1)(88)D=()H
(2)(10101010)B=()D
(3)(0F0)H=()D
13.设机器的字长为8位:
已知X=64,Y=-10,则[X]补=________H,[Y]补=________H。
14.8086微处理器包含4个专用寄存器,其中和寄存器一般与堆栈段寄存器SS连用,用以确定堆栈段中某一存储器单元的地址;而和寄存器一般与数据段寄存器DS连用,用以确定数据段中某一存储器单元的地址。
15.如果在一个程序段开始执行之前,CS=0A8EH,IP=2A40H,试问:
该程序段的第一个单元的物理地址是什么?
16.目的变址寄存器是_______。
A.DIB.SIC.SPD.DX
17.已知(SS)=1230H,(SP)=0008H,(AX)=2000H,(BX)=3000H,试问:
(1)执行PUSHAX指令后,问其栈顶的物理地址为H;
(2)再执行PUSHBX和POPAX指令后,(SP)=H,(AX)=H。
18.数字9的ASCII码是________。
19.8086的OUTDX,AL中目的操作数为寻址方式,当端口地址(DX)在范围内可用直接寻址。
20.设初值(AX)=4321H,(DX)=8765H,程序片段如下:
MOVCL,04H
SHLDX,CL
SHRAX,CL
上述程序片段执行后(DX)=H;(AX)=H
21.利用一条逻辑指令完成下述操作。
①;将AH的低半字节清零,高半字节不变
②;将AH的高半字节全置“1”,低半字节不变
③;将AH的高半字节取反,低半字节不变
22.微型计算机中各部件之间是用___________连接起来的。
AABBCBCDBD系统总线
23.堆栈指针的作用是用来指示________。
A.栈顶地址B.栈底地址 C.下一条要执行的指令的地址
24