微机原理及应用黄冰.docx
《微机原理及应用黄冰.docx》由会员分享,可在线阅读,更多相关《微机原理及应用黄冰.docx(84页珍藏版)》请在冰点文库上搜索。
微机原理及应用黄冰
1章绪论
用8位二进制码,写出以下十进制数的原码和补码表示
说明:
原码:
最高位为符号位,正数符号位为0,负数符号位为1。
补码:
正数的补码与原码相同;负数的补码:
由其原码除符号位维持不变外,其余列位按位取反,末位加1而成。
解:
(1)[+65]原=01000001B注:
65=64+1
[+65]补=[+65]原=01000001B注:
正数补码与原码相同
(2)[+115]原=01110011B注:
115=64+32+16+2+1
[+115]补=[+115]原=01110011B注:
正数补码与原码相同
(3)[-65]原=11000001B注:
65=64+1
[-65]补=10111110B+1B=10111111B注:
除符号位外,按位取反,末位加1
(4)[-115]原=11110011B注:
115=64+32+16+2+1
[-115]补=10001100B+1B=10001101B注:
除符号位外,按位取反,末位加1
用16位二进制码,写出以下十进制数的原码和补码表示。
(1)[+120]原=0000000001111000B注:
120=64+32+16+8
[+120]补=[+120]原=0000000001111000B注:
正数补码与原码相同
(2)[-120]原=1000000001111000B注:
120=64+32+16+8
[-120]补=1111111110000111B+1B=1111111110001000B
注:
除符号位外,按位取反,末位加1
(3)[+230]原=0000000011100110B注:
230=128+64+32+4+2
[+230]补=0000000011100110B注:
正数补码与原码相同
(4)[-230]原=1000000011100110B注:
230=128+64+32+4+2
[-230]补=1111111100011001B+1B=1111111100011010B
注:
除符号位外,按位取反,末位加1
写出以下用补码表示的二进制数的真值。
说明:
正数的补码=原码
负数的补码:
再次求补码取得其原码
解:
(1)00110111正数的补码真值:
32+16+4+2+1=+55
(2)01011001正数的补码真值:
64+16+8+1=+89
(3)10001101负数的补码真值:
11110010B+1B=11110011B=-115
(4)11111001负数的补码真值:
10000110B+1B=10000111B=-7
第2章Intel8086微处置器
在存储器中寄存的数据如下图。
试读出75422H和75424H字节单元的内容是什么?
读出75422H和75424H字单元的内容是什么?
存储器
75420H
13H
1H
78H
2H
9CH
3H
24H
4H
5DH
5H
E6H
解:
75422H字节单元的内容:
9CH
75424H字节单元的内容:
5DH
75422H字单元的内容:
249CH
75424H字单元的内容:
0E65DH
段地址和偏移地址为1000H:
117AH的存储单元的物理地址是什么?
而1109H:
00EAH或1025H:
0F2AH的存储单元的物理地址又是什么?
这说明了什么问题?
说明:
物理地址=段地址×10H+偏移地址
解:
1000H:
117AH存储单元的物理地址1000H×10H+117AH=1117AH
1109H:
00EAH存储单元的物理地址1109H×10H+00EAH=1117AH
1025H:
0F2AH存储单元的物理地址1025H×10H+0F2AH=1117AH
说明:
不同的段地址不同的偏移地址能够指向同一个物理地址,即各个逻辑段能够彼此重叠。
在存储器分段结构中,每一个段区最大可占用多少地址范围,什么缘故?
若是在8086的机械中,假设段间不许诺重叠,那么最多可分多少个段区?
解:
假设为8086微处置器,每一个段区最大可占用64KB,因为所有内部寄放器都只有16位。
假设每段64KB,最多可分16个段区,因为8086微处置器有20条地址线,可访问存储器的最大容量为1MB。
若是从存储器的2000H地址开始分派段区,要求数据段占用1KB范围,堆栈段占用512B范围,代码段占用8KB范围。
按数据段、堆栈段和代码段的顺序持续寄存,试画出存储器分段地址分派示用意,图中应写明各段寄放器的内容?
解:
02000H
1KB
DS:
0200
02400H
512B
SS:
0240H
02600H
8KB
CS:
0260H
注:
1KB:
0000000000B~1111111111B
SS:
起始物理地址2000H+1KB=2000H+400H=02400H
512B:
000000000B~111111111B
CS:
起始物理地址2400H+512B=2400H+200H=02600H
指出以下指令的源和目标操作数的寻址方式:
题号
指令
目的操作数的寻址方式
源操作数的寻址方式
(1)
MOVARRAY,BX
直接寻址
寄存器寻址
(2)
ADCCX,ALPHA[BX][SI]
寄存器寻址
带位移的基址变址寻址
(3)
ANDGAMMA[DI],B
带位移的变址寻址
立即寻址
(4)
INCBL
寄存器寻址
(5)
TESTES:
[SI],DX
寄存器间接寻址
寄存器寻址
(6)
SBBSI,[BP]
寄存器寻址
寄存器间接寻址
现有DS=2000H,BX=0100H,SI=0002H,(20200H)=12H,(20201H)=34H,(20202H)=56H,(20203H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明以下各指令执行完后AX寄放器的内容。
题号
指令
AX寄存器的内容
简单解释
(1)
MOVAX,1200H
1200H
立即数赋给AX
(2)
MOVAX,BX
0100H
寄存器BX值赋给AX
(3)
MOVAX,[1200H]
4C2AH
PA=DS×16+1200H=21200H
(4)
MOVAX,[BX]
3412H
PA=DS×16+BX=20100H
(5)
MOVAX,1100H[BX]
4C2AH
PA=DS×16+BX+1100H=21200H
(6)
MOVAX,[BX][SI]
7856H
PA=DS×16+BX+SI=20102H
(7)
MOVAX,1100H[BX][SI]
65B7H
PA=DS×16+BX+SI+1100H=21202H
假定DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据段中变量名VAL的偏移地址值为0050H,试指出下面源操作数字段的寻址方式是什么?
其物理地址值是多少?
题号
指令
源操作数的寻址方式
源操作数的物理地址
(1)
MOVAX,00ABH
立即寻址
在代码段中,与CS、IP有关
(2)
MOVAX,BX
寄存器寻址
在寄存器中
(3)
MOVAX,[100H]
直接寻址
DS×16+100H=20100H
(4)
MOVAX,[BX]
寄存器间接寻址
DS×16+BX=20100H
(5)
MOVAX,[BP]
寄存器间接寻址
SS×16+BP=15010H
(6)
MOVAX,[BX+10]
带位移的基址寻址
DS×16+BX+10=2010AH
(7)
MOVAX,[BX][SI]
基址变址寻址
DS×16+BX+SI=201A0H
(8)
MOVAX,VAL
直接寻址
DS×16+VAL=20050H
(9)
MOVAX,ES:
[BX]
寄存器间接寻址
ES×16+BX=21100H
(10)
MOVAX,[SI]
寄存器间接寻址
DS×16+SI=200A0H
(11)
MOVAX,VAL[BX]
带位移的基址寻址
DS×16+BX+VAL=20150H
(12)
MOVAX,VAL[BX][SI]
带位移的基址变址寻址
DS×16+BX+SI+VAL=201F0H
设AX=1122H,BX=3344H,CX=5566H,SP=2000H,试分析以下程序段执行后,AX、BX、CX、SP中的内容各为多少?
并画出堆栈转变示用意。
解:
第1条指令
AX=1122H
PUSHAX
BX=3344H
SP→
22H
CX=5566H
11H
SP=1FFEH
第2条指令
PUSHBX
SP→
44H
AX=1122H
33H
BX=3344H
22H
CX=5566H
11H
SP=1FFCH
第3条指令
PUSHCX
SP→
66H
55H
44H
AX=1122H
33H
BX=3344H
22H
CX=5566H
11H
SP=1FFAH
第4条指令
POPAX
SP→
44H
AX=5566H
33H
BX=3344H
22H
CX=5566H
11H
SP=1FFCH
第5条指令
AX=5566H
POPCX
BX=3344H
SP→
22H
CX=3344H
11H
SP=1FFEH
以下程序段中每一条指令执行完后,AX中的十六位进制内容是什么?
指令
AX中的内容
指令
MOVAX,0
AX=0000H
DECAX
AX=0FFFFH
ADDAX,7FFFFH
AX=7FFEH
ADDAX,2
AX=8000H
NOTAX
AX=7FFFH
SUBAX,0FFFFH
AX=8000H
ADDAX,8000H
AX=0000H
ORAX,0BFDFH
AX=0BFDFH
ANDAX,0EBEDH
AX=0ABCDH
XCHGAH,AL
AX=0CDABH
SALAX,1
AX=9B56H(CF=1,PF=1)
1100110110101011算术左移
RCLAX,1
AX=36ADH(CF=1,PF=1,OF=1)
1001101101010110带进位循环左移
循环移位指令不阻碍除CF和OF之外的其他条件标志。
移位指令依照移位后的结果设置SF、ZF和PF位,AF位那么无概念。
RCL:
OF=1最高有效位的值发生转变;PF保留原先的值;
将十六进制数62A0H与以下各个数相加,试给出和数及标志位AF,SF,ZF,CF,OF和PF的状态。
(1)9D60H
和数:
0H
AF=0,SF=0,ZF=1,CF=1,OF=0,PF=1
(2)4321H
和数:
0A5C1H
AF=0,SF=1,ZF=0,CF=0,OF=1,PF=0
从以下各个数中减去4AE0H,试给出差值及标志位AF,SF,ZF,CF,OF和PF的状态。
(1)1234H
(2)9090H
解:
AF=0,SF=1,ZF=0,CF=1,OF=0,PF=0
AF=0,SF=0,ZF=0,CF=0,OF=1,PF=0
假设BX=00E3H,字变量VALUE中寄存的内容为79H,确信以下各条指令单独执行后的结果。
题号
指令
BX寄存器的内容
简单解释
(1)
XORBX,VALUE
009AH
0000000011100011XOR0000000001111001
(2)
ANDBX,VALUE
0061H
0000000011100011AND0000000001111001
(3)
ORBX,VALUE
00FBH
0000000011100011OR0000000001111001
(4)
XORBX,0FFH
001CH
0000000011100011XOR0000000011111111
(5)
ANDBX,0
0000H
(6)
TESTBX,01H
00E3H
TEST指令只影响标志位,不影响结果
(1)XOROSZAPC:
0XXUX0SF=0;ZF=0;PF=1
(2)ANDOSZAPC:
0XXUX0SF=0;ZF=0;PF=0
(3)OROSZAPC:
0XXUX0SF=0;ZF=0;PF=0
(4)XOROSZAPC:
0XXUX0SF=0;ZF=0;PF=0
(5)ANDOSZAPC:
0XXUX0SF=0;ZF=1;PF=1
(6)TESTOSZAPC:
0XXUX0SF=0;ZF=0;PF=0
试写出执行以下指令序列后BX寄放器的内容。
执行前BX=6D16H。
MOVCL,7
SHRBX,CL
解:
BX=6D16H=0110110100010110B
执行后:
0000000011011010B=00DAH
假定DX=00B9H,CL=3,CF=1,确信以下各条指令单独执行后DX中的值。
题号
指令
DX寄存器的内容
简单解释
(1)
SHRDX,1
005CH
00B9H=0000000010111001B逻辑右移
(2)
SARDX,CL
0017H
00B9H=0000000010111001B算术右移
(3)
SHLDX,CL
05C8H
00B9H=0000000010111001B逻辑左移
(4)
SHLDL,1
0072H
B9H=10111001B逻辑左移
(5)
RORDX,CL
2017H
00B9H=0000000010111001B循环右移
(6)
ROLDL,CL
00CDH
B9H=10111001B循环左移
(7)
SALDH,1
00B9H
DH=0算术左移
(8)
RCLDX,CL
05CCH
00B9H=0000000010111001B带进位循环左移
(9)
RCRDL,1
00DCH
B9H=10111001B带进位循环右移
第3章宏汇编语言程序设计
关于下面的数据概念,各条指令单独执行后,有关寄放器的内容是什么?
FLDBDB?
TABLEADW20DUP(?
)
TABLEBDB'ABCD'
(1)MOVAX,TYPEFLDB;AX=01H;字节类型
(2)MOVAX,TYPETABLEA;AX=02H;字类型
(3)MOVCX,LENGTHTABLEA;CX=14H;DUP概念的变量,分派的单元数
(4)MOVDX,SIZETABLEA;DX=28H;SIZE=LENGTH*TYPE
(5)MOVCX,LENGTHTABLEB;CX=01H;非DUP概念的变量,LENGTH=1
试写出完成以下操作的伪指令语句:
(1)将56H,78,B3H,100寄存在概念为字节变量ARRAY的存储单元中。
ARRAYDB56H,78,0B3H,100
(2)将字数据2965H,45H,2965,A6H寄存在概念为字变量DATA的存储单元中。
DATADW2965H,45H,2965,0A6H
(3)将字节数据56H,C6H,78H,12H寄存在字变量ALPHA的存储单元中,而且不改变数据按字节存储的顺序。
ALPHADW0C656H,1278H
(4)在BETA为首址的存储单元中持续寄存字节数据,2个23,5个'A',10个(1,2),20个空单元。
BETADB2DUP(23),5DUP('A'),10DUP(1,2),20DUP(?
)
(5)在STRING为首址的存储单元中寄存字符串'THISISAEXAMPE'。
STRINGDB'THISISAEXAMPE'
(6)用符号COUNT替代100。
COUNTEQU100(或COUNT=100)
画图表示以下语句中数据在存储器中的存储情形。
(1)BYTE_VARDB'ABCD',76,57H,3DUP(?
),2DUP(1,3)
(2)WORD_VARDW5DUP(0,1),?
'AB','CD',7965。
(1)从左到右、从上到下为地址增大的方向。
41H
42H
43H
44H
4CH
57H
?
?
?
01H
03H
01H
03H
(2)从左到右、从上到下为地址增大的方向。
00
00
01
00
00
00
01
00
00
00
01
00
00
00
01
00
00
00
01
00
?
?
42
41
44
43
1D
1F
设置一个数据段DATA_SEG,其中持续寄存以下的8个变量,用段概念语句和变量概念语句写出数据段:
(1)DATA1为字符串变量:
'DATASEGMENT'
(2)DATA2为十进制数字字节变量:
72,65,-10
(3)DATA3为十六进制数字字节变量:
109,98,21,40
(4)DATA4为10个零的字节变量
(5)DATA5为数字的ASCII字符字节变量:
12345
(6)DATA6为十进制数的字变量:
7,9,298,1967
(7)DATA7为十六进制数的字变量:
785,13475
(8)DATA8为本段中字变量和字节变量之间的字节单元数之差。
解:
DATASEGMENT
DATA1DB'DATASEGMENT'
DATA2DB72,65,-10
DATA3DB6DH,62H,15H,28H
DATA4DB10DUP(0)
DATA5DB'12345'
DATA6DW7,9,298,1967
DATA7DW0311H,34A3H
DATA8DB$-DATA6-(DATA6-DATA1)
DATAENDS
假设程序中的变量概念如下:
BUF1DB100DUP('A')
BUF2DW1275H,567,0C5H
BUF3DB20DUP(?
)
BUF4DB7,4,6,9,8
(1)用一条指令将BUF1的偏移地址送入BX。
MOVBX,OFFSETBUF1或LEABX,BUF1
(2)将BUF2的第三字节数据送入CL。
MOVCL,BUF2+2
(3)将A6H送入BUF3的第十个字节单元中。
MOVBUF3+9,0A6H
(4)用伪指令写出BUF1和BUF2二者的总长度(字节数)
COUNTEQUBUF3-BUF1
给出等值语句如下:
ALPHAEQU100
BETAEQU25
GAMMAEQU2
求以下表达式的值:
(1)ALPHA*100+BETA;10025D=2729H
(2)ALPHAMODGAMMA+BETA;100MOD2+25=25D=0019H
(3)(ALPHA+2)*BETA-ALPHA;(100+2)*25–100=2450D=0992H
(4)(BETA/3)MOD5;(25/3)MOD5=03H
(5)BETAAND7;00011001AND00000111=01H
(6)GAMMAOR3;00000010OR00000011=0003H
以下语句中,在存储器中每一个变量分派到多少字节?
VR1DW9;2字节
VR2DW4DUP(?
),2;4*2+2=10字节
VR3EQU100;0字节
VR4DDVR3DUP(?
);100*4=400字节
VR5DB2DUP(?
VR3DUP(0,1));2*(1+100*2)=402字节
VR6DB'HOWAREYOU?
';12字节
试写出一个完整的数据段DATA_SEG,第一把10个紧缩的BCD码29寄存在ARRAY变量字节单元中,紧接着把-25,4,10,76,3寄存在ALPHA数组变量的字单元中,接着留100个空单元作为工作单元用,它概念为字节变量BUFFER。
DATA_SEGSEGMENT
ARRAYDB10DUP(29H)
ALPHADW-25,4,10,76,3
BUFFERDB100DUP(?
)
DATA_SEGENDS
将寄存在字节变量BCD1中的两个十进制数的ASCII码归并为一字节紧缩型BCD码,存入字节变量BCD2,试编写程序。
DATASEGMENT
BCD1DB'34'
BCD2DB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,BCD1
MOVCL,4
SALAL,CL
MOVBL,B