接口与程序设计作业(附答案)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
, 600H
, 601H
,
,
, 256
24题(P108).有一个首地址为的20个字的数组,说明下列程序的功能。
, 20
, 0
,
:, []
, 2
LOOP
,
25题(P109).按照下列要求,编写相应的程序段:
⑴起始地址为的主存单元中存放有一个字符串(长度大于6),把该字符串的第一和第六字符(字节变量)传送给,
习题1(教材P56)
1.8086/8088微处理器地址总线有多少位?寻址范围是多少?
答:20位 A019。寻址范围00000
2.8086/8088微处理器分哪两部分?各部分主要由什么组成?
答:执行单元和总线接口单元。
包括:、寄存器组、暂存器、标志寄存器、控制单元。
包括:指令队列缓冲器、段寄存器及指令指针、总线地址加法器、总线控制逻辑。
答:区别:伪指令语句是汇编程序可以识别和解释语句(不能直接执行),硬指令语句是可以执行的语句。
伪指令语句主要作用是为汇编程序提供解释说明,它仅仅是在汇编过程中告诉汇编程序如果进行汇编。
2.什么是标识符?汇编程序中标识符怎样组成?
答:是用户自己定义的符号名。在汇编程序中标识符有两种:标号标识符,用在指令语句中,后面跟冒号,表示程序入口的逻辑地址。符号(或名字)标识符,用在伪指令语句中,后面不跟冒号,通常是定义一个变量,或说明变量类型。标识符一般不超31个字符,数字及常规符号($、@、?等)不能打头,也不能使用保留字。标识不区分大小写。
(2)
答:不能作为寻址寄存器使用
(3)[], []
答:算术运算指令中的两个操作数不能同时都在内存中
(4)
答:指令中的操作数必须是16位操作数,是8位
(5),
答:不能做源操作数,
(6),
答:只能使用(当端口数据位是8位)或(端口数据位是16位)与端口交换数据
(7)3
答:端口地址大于255时,必须有寄存器间接寻址。
原则是:先进后出,
两个操作:入栈、出栈,对应指令:(入栈)、(出栈)。
5.已知0H,00B0H,画图说明执行下列指令序列时,堆栈区和的内容如何变化?
, 8075H
,0F79H
[]
解:
8.请分别用一条汇编语言指令完成如下功能:
(1)把寄存器和寄存器的内容相加,结果存入寄存器。
解:,
(2)用寄存器和的基址变址寻址方式把存储器的一个字节与寄存器的内容相加,并把结果送中。
10000 00000000 0000
1;0;1;0;1;1。
进位表示最高位产生进位。
溢出表示超出数的表示范围。1
8.什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?
答:逻辑地址:产生实际地址的两个地址分量:首地址和偏移地址。物理地址:内存单元地址。用户在编写程序时只使用逻辑地址。程序装到内存中使用物理地址。物理地址可以通过逻辑地址求得。
9.设现行数据段位于存储器的B0000H到存储单元,段寄存器内容为多少?
答:000H
11.8086/8088微处理器工作在最小模式和最大模式时的主要特点是什么?有何区别?
答:最小模式只有一个不需要总线控制器。最大模式有多个微处理器,必须要总线控制器来对总线控制权进行分配。引脚1工作在最小模式。0工作在最大模式。
(1) , 1200H
解:1200H
(3) , [1200H]
解:物理地址×16+1221200H,所以4C2
(5) , [1100H]
解:物理地址×1611110021200H ,所以4C2
(7) , [][1100H]
解:物理地址×161102H ,所以65B7H
(2) ,
解:0100H
(4), []
(5) , 300
答:300大于255,是8位的,最多只能存255
(6) [],
答:不能做间接寻址寄存器。
(7) ,
答:基址变址寻址必须打[]。
(8)20H,
答:立即数不能做目的地址单元。
3.已知数字0~9对应的格雷码依次为:18H、34H、05H、06H、09H、0、0、11H、12H、14H,它存放在于以为首地址(设为200H)的连续区域中。对如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。
来自百度文库:,0
:
26题(P109).按下述要求,分别给出3种方法,每种方法只用一条指令。
⑴使0
解:
方法一:
方法二: , 0
方法三: , 0
②使0
解:
方法一: , 0000H
方法二: , 0000H
方法三: ,
③同时使0和0
解:
方法一: ,
方法二: , 0000H
方法三: ,
习题3(教材P182)
1.伪指令语句与硬指令语句的本质区别是什么?伪指令语句有什么主要作用?
:, []
LOOP
,AL
25题(P185).编写一个程序段,将寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在、、和中。
,
AL, 0
, 4
,
, 0
,
,
, 0
,
, 0
27题(P185).已知用于数码显示的代码表位为:0C0H,0,0A4H, 0B0H,99H,92H,82H,0F8H,80H,90H,88H,
解:, []或, [][]
(3)用寄存器和02的寄存器相对寻址方式,把存储器的一个字和寄存器的内容相加,并把结果送回存储器中。
解:[02]或02 []
(4)把数0A0H与寄存器内容相加,并把结果送中。
解:AL,0A0H
10.指出下列指令错误
(1)[], 30H
答:立即数不能作为单元地址来保存数据,所以交换指令中的两个操作数必须是地址操作数。
10010 1101 0100 0011
0;0;1;0;0;0。
H
答:0011100010000001
+0011 010110010111
0110111000011000
0;0;0;0;0;1。
01E301E3H
答:0000000111100011
+11111110 00011101(-01E3H的补码)
(2) [],目标地址的偏移量在存储器单元中,该存储器单元有效地址为()+中,所对应的物理地址×16+()20000125620A1232F7H,该单元存放的内容为3280H,所以[]转移的目的地址是:3280H(也可以直接写成有效地址3280H)
(3)[][]目标地址的偏移量在存储器单元中,该存储器单元有效地址为()+ ()中,所对应的物理地址×16+()+()=2264E5H,该单元存放的内容为4500H,所以[]转移的目的地址是:4500H(可以直接写成有效地址4500H)。
解:物理地址×16200H,所以2412H
(6),[][]
解:物理地址×162220102H,所以7856H
2.指出下列指令错误
(1) ,
答:数据类型不匹配,是16位,是8位。
(2) ,
答:指令指针不能直接修改。
(3) , 1234H
答:段地址寄存器不能直接置数。
(4) ,
答:段地址不能做源操作数。
6.试求出下列运算后的各个状态标志,说明进位标志和溢出标志的区别?
12783469H
答:0001 0010 0111 1000
+0011 0100 0110 1001
0100 0110 1110 0001
0;0;0;0;1;1。
54E3H-27A0H
答:0101 0100 1110 0011
+1101 1000 0110 0000(-27A0的补码)
,;取表的首地址送,执行后()=200H
,8;立即数8送,执行后,()=8
;查表,将表首地址+8(()+())所对应单元内容送,
;执行后,()=12H(8所对应的格雷码)
4.什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令?
答:堆栈是在内存中开的一个特殊的数据区,堆顶有堆栈指针与共同决定。
A ?
B ?
?
, A
, B
, 2
, 2
2
22题(P184).编写程序完成12H,45H,0F3H 6,20H,0,90H,0C8H,57H和34H共10字节数据之和,并将结果存入字节变量中(不考虑溢出)。
1 12H,45H,0F3H6,20H,0, 90H,0C8H, 57H,34H
, 10
, 0
1
4.汇编语句有哪两种,每个语句有哪4部分组成?
答:指令语句(又称执行语句)和伪指令语句(又称说明性语句)。指令语句4部分包括,①标号:、②硬指令助记符、③操作数、④;注释。伪指令语句4部分包括,①符号名、②伪指令助记符、③参数、④;注释。
5.汇编程序开发有哪4个步骤?分别利用什么程序完成,产生什么输出文件?
解:
, 0
, []
, [5]
⑵从主存开始的4个字节中保存了4个非压缩的码,现按低(高)地址对低(高)位的原则将它们合并到中
解:
, 0
, []
AL, 0
, [1]
, 0
, 4
,
AL
,AL
, [2]
, 0
, [3]
, 0
, 4
,
AL
⑶编写一个程序段,在 高4位全为0时,使0;否则使1
解:
,0F000H
0;[-1]补码
13.80486地址总线宽度为多少?数据总线宽度为多少?
答:80486地址总线宽度为32位(分成4个块,每个块为8位字长,块有A10选择)有数据总线宽度为32位。
14.现有6个字节的数据分别为11H,22H,33H,44H,55H,66H,已知它们在存储器中的物理地址为400A5H~400,若当前的()=4002H,请说明它们的偏移地址值。如果从存储器中读出这些数据,至少需要访问几次存储器,各读出哪些数据?
7.假设是一个字变量,1和2是两个字节变量,指出下列语句中的错误原因。
(1)[], 1000
答:数据类型不匹配,目的地址单元是字节单元,1000大于255。无法存放。
(2), []
答:后只能跟标识符。
(3)1, 2
答:的两个操作数不能同时在存储器中。
(4),12
答:运算符只能对常数进行操作,不能对变量进行操作。
解:∵物理地址=()×16+偏移地址,
∴偏移地址=物理地址-()×16=400A5H~4004002085H~8
至少需要访问三次存储器,每次读出一个字,即2211H,4433H,6655H。
这六个数在存储器中的存放位置如图所示。
习题2(教材P105)
1.已知2000H,0100H,0002H,存储单元[20100H]~[20103H]依次存放12 24 56 78H,[21200H]~[21203H]依次存放2A4CB7 65H,说明下列每条指令执行后寄存器的内容。
83H,0,0C1H,86H,8
它依次表示0~9这16个数码的显示代码。现编写一个程序实现将中的一个数字(0~9,)转换成对应的显示码。
4.8086/8088微处理器中有几个通用寄存器?几个变址寄存器?有几个指针寄存器?几个段寄存器?
答:8个通用寄存器、、、、、、、。2个变址寄存器、。2个指针寄存器、。、、、段地址寄存器。
5.8086/8088微处理器中有哪些标志位?它们的含义和作用如何?
答:零标志位、进位标志、溢出标志位、辅助进位标志位、奇偶标志位、符号标志位、方向标志位、中断允许标志位、跟踪标志。
20.假设2000H,1256H,528,位移量20A1H,[232F7H]=3280H,[264E5H]=2450H,试问执行下列段内间接转移指令后,转移的目的地址是什么?
(1)
(2)[]
(3)[][]
解:(1) ,目标地址的偏移量在中,所以转移的目的地址是:1256H(也可以直接写成有效地址1256H)。
(5),
答:数据类型不匹配,是8位的,是16位变量。
(6)
答:是变量,其指的单元中存放的是操作数,不能用做跳转入口。
8.是个常数,请问下列语句中两个操作有什么不同?
, 0
答:第一个是指令语句,在程序运行时才执行,第二个是逻辑运算符,是在汇编时就对两个常量完成的关系运算。
选做题
22题(P184).编写程序完成两个已知双精度(4B)A和B相加,并将结果存入双精度变量单元中(不考虑溢出)
答:①编辑。使用文本编辑器。产生汇编源程序文件:文件名。源文件是文本文件。
②汇编。使用汇编程序,如或,排除程序中的语法错误。产生目标文件:文件名。目标文件是二进制文件,是不能执行的文件。
③连接。使用。产生可执行文件:文件名.
④调试。使用。本身不产生文件,是对连接产生的可执行进行调试,排除程序中的算法错误,保证可执行文件的正确性。
23.假设和存放的是有符号数,和存放的是无符号数,请用比较指令和条件转移指令实现以下判断:
(1)若>,转到执行;
(2)若>,转到执行;
(3)若0,转到执行;
(4)若产生溢出,转到执行;
(5)若≤,转到执行;
(6)若≤,转到执行。
解:(1)
(2)
(3) ,0
(4)
(5)
(6)
选做题
14题(P107).已知数据段500600H中存放了一字符串,说明下列程序段执行后的结果。
, 601H
,
,
, 256
24题(P108).有一个首地址为的20个字的数组,说明下列程序的功能。
, 20
, 0
,
:, []
, 2
LOOP
,
25题(P109).按照下列要求,编写相应的程序段:
⑴起始地址为的主存单元中存放有一个字符串(长度大于6),把该字符串的第一和第六字符(字节变量)传送给,
习题1(教材P56)
1.8086/8088微处理器地址总线有多少位?寻址范围是多少?
答:20位 A019。寻址范围00000
2.8086/8088微处理器分哪两部分?各部分主要由什么组成?
答:执行单元和总线接口单元。
包括:、寄存器组、暂存器、标志寄存器、控制单元。
包括:指令队列缓冲器、段寄存器及指令指针、总线地址加法器、总线控制逻辑。
答:区别:伪指令语句是汇编程序可以识别和解释语句(不能直接执行),硬指令语句是可以执行的语句。
伪指令语句主要作用是为汇编程序提供解释说明,它仅仅是在汇编过程中告诉汇编程序如果进行汇编。
2.什么是标识符?汇编程序中标识符怎样组成?
答:是用户自己定义的符号名。在汇编程序中标识符有两种:标号标识符,用在指令语句中,后面跟冒号,表示程序入口的逻辑地址。符号(或名字)标识符,用在伪指令语句中,后面不跟冒号,通常是定义一个变量,或说明变量类型。标识符一般不超31个字符,数字及常规符号($、@、?等)不能打头,也不能使用保留字。标识不区分大小写。
(2)
答:不能作为寻址寄存器使用
(3)[], []
答:算术运算指令中的两个操作数不能同时都在内存中
(4)
答:指令中的操作数必须是16位操作数,是8位
(5),
答:不能做源操作数,
(6),
答:只能使用(当端口数据位是8位)或(端口数据位是16位)与端口交换数据
(7)3
答:端口地址大于255时,必须有寄存器间接寻址。
原则是:先进后出,
两个操作:入栈、出栈,对应指令:(入栈)、(出栈)。
5.已知0H,00B0H,画图说明执行下列指令序列时,堆栈区和的内容如何变化?
, 8075H
,0F79H
[]
解:
8.请分别用一条汇编语言指令完成如下功能:
(1)把寄存器和寄存器的内容相加,结果存入寄存器。
解:,
(2)用寄存器和的基址变址寻址方式把存储器的一个字节与寄存器的内容相加,并把结果送中。
10000 00000000 0000
1;0;1;0;1;1。
进位表示最高位产生进位。
溢出表示超出数的表示范围。1
8.什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?
答:逻辑地址:产生实际地址的两个地址分量:首地址和偏移地址。物理地址:内存单元地址。用户在编写程序时只使用逻辑地址。程序装到内存中使用物理地址。物理地址可以通过逻辑地址求得。
9.设现行数据段位于存储器的B0000H到存储单元,段寄存器内容为多少?
答:000H
11.8086/8088微处理器工作在最小模式和最大模式时的主要特点是什么?有何区别?
答:最小模式只有一个不需要总线控制器。最大模式有多个微处理器,必须要总线控制器来对总线控制权进行分配。引脚1工作在最小模式。0工作在最大模式。
(1) , 1200H
解:1200H
(3) , [1200H]
解:物理地址×16+1221200H,所以4C2
(5) , [1100H]
解:物理地址×1611110021200H ,所以4C2
(7) , [][1100H]
解:物理地址×161102H ,所以65B7H
(2) ,
解:0100H
(4), []
(5) , 300
答:300大于255,是8位的,最多只能存255
(6) [],
答:不能做间接寻址寄存器。
(7) ,
答:基址变址寻址必须打[]。
(8)20H,
答:立即数不能做目的地址单元。
3.已知数字0~9对应的格雷码依次为:18H、34H、05H、06H、09H、0、0、11H、12H、14H,它存放在于以为首地址(设为200H)的连续区域中。对如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。
来自百度文库:,0
:
26题(P109).按下述要求,分别给出3种方法,每种方法只用一条指令。
⑴使0
解:
方法一:
方法二: , 0
方法三: , 0
②使0
解:
方法一: , 0000H
方法二: , 0000H
方法三: ,
③同时使0和0
解:
方法一: ,
方法二: , 0000H
方法三: ,
习题3(教材P182)
1.伪指令语句与硬指令语句的本质区别是什么?伪指令语句有什么主要作用?
:, []
LOOP
,AL
25题(P185).编写一个程序段,将寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在、、和中。
,
AL, 0
, 4
,
, 0
,
,
, 0
,
, 0
27题(P185).已知用于数码显示的代码表位为:0C0H,0,0A4H, 0B0H,99H,92H,82H,0F8H,80H,90H,88H,
解:, []或, [][]
(3)用寄存器和02的寄存器相对寻址方式,把存储器的一个字和寄存器的内容相加,并把结果送回存储器中。
解:[02]或02 []
(4)把数0A0H与寄存器内容相加,并把结果送中。
解:AL,0A0H
10.指出下列指令错误
(1)[], 30H
答:立即数不能作为单元地址来保存数据,所以交换指令中的两个操作数必须是地址操作数。
10010 1101 0100 0011
0;0;1;0;0;0。
H
答:0011100010000001
+0011 010110010111
0110111000011000
0;0;0;0;0;1。
01E301E3H
答:0000000111100011
+11111110 00011101(-01E3H的补码)
(2) [],目标地址的偏移量在存储器单元中,该存储器单元有效地址为()+中,所对应的物理地址×16+()20000125620A1232F7H,该单元存放的内容为3280H,所以[]转移的目的地址是:3280H(也可以直接写成有效地址3280H)
(3)[][]目标地址的偏移量在存储器单元中,该存储器单元有效地址为()+ ()中,所对应的物理地址×16+()+()=2264E5H,该单元存放的内容为4500H,所以[]转移的目的地址是:4500H(可以直接写成有效地址4500H)。
解:物理地址×16200H,所以2412H
(6),[][]
解:物理地址×162220102H,所以7856H
2.指出下列指令错误
(1) ,
答:数据类型不匹配,是16位,是8位。
(2) ,
答:指令指针不能直接修改。
(3) , 1234H
答:段地址寄存器不能直接置数。
(4) ,
答:段地址不能做源操作数。
6.试求出下列运算后的各个状态标志,说明进位标志和溢出标志的区别?
12783469H
答:0001 0010 0111 1000
+0011 0100 0110 1001
0100 0110 1110 0001
0;0;0;0;1;1。
54E3H-27A0H
答:0101 0100 1110 0011
+1101 1000 0110 0000(-27A0的补码)
,;取表的首地址送,执行后()=200H
,8;立即数8送,执行后,()=8
;查表,将表首地址+8(()+())所对应单元内容送,
;执行后,()=12H(8所对应的格雷码)
4.什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令?
答:堆栈是在内存中开的一个特殊的数据区,堆顶有堆栈指针与共同决定。
A ?
B ?
?
, A
, B
, 2
, 2
2
22题(P184).编写程序完成12H,45H,0F3H 6,20H,0,90H,0C8H,57H和34H共10字节数据之和,并将结果存入字节变量中(不考虑溢出)。
1 12H,45H,0F3H6,20H,0, 90H,0C8H, 57H,34H
, 10
, 0
1
4.汇编语句有哪两种,每个语句有哪4部分组成?
答:指令语句(又称执行语句)和伪指令语句(又称说明性语句)。指令语句4部分包括,①标号:、②硬指令助记符、③操作数、④;注释。伪指令语句4部分包括,①符号名、②伪指令助记符、③参数、④;注释。
5.汇编程序开发有哪4个步骤?分别利用什么程序完成,产生什么输出文件?
解:
, 0
, []
, [5]
⑵从主存开始的4个字节中保存了4个非压缩的码,现按低(高)地址对低(高)位的原则将它们合并到中
解:
, 0
, []
AL, 0
, [1]
, 0
, 4
,
AL
,AL
, [2]
, 0
, [3]
, 0
, 4
,
AL
⑶编写一个程序段,在 高4位全为0时,使0;否则使1
解:
,0F000H
0;[-1]补码
13.80486地址总线宽度为多少?数据总线宽度为多少?
答:80486地址总线宽度为32位(分成4个块,每个块为8位字长,块有A10选择)有数据总线宽度为32位。
14.现有6个字节的数据分别为11H,22H,33H,44H,55H,66H,已知它们在存储器中的物理地址为400A5H~400,若当前的()=4002H,请说明它们的偏移地址值。如果从存储器中读出这些数据,至少需要访问几次存储器,各读出哪些数据?
7.假设是一个字变量,1和2是两个字节变量,指出下列语句中的错误原因。
(1)[], 1000
答:数据类型不匹配,目的地址单元是字节单元,1000大于255。无法存放。
(2), []
答:后只能跟标识符。
(3)1, 2
答:的两个操作数不能同时在存储器中。
(4),12
答:运算符只能对常数进行操作,不能对变量进行操作。
解:∵物理地址=()×16+偏移地址,
∴偏移地址=物理地址-()×16=400A5H~4004002085H~8
至少需要访问三次存储器,每次读出一个字,即2211H,4433H,6655H。
这六个数在存储器中的存放位置如图所示。
习题2(教材P105)
1.已知2000H,0100H,0002H,存储单元[20100H]~[20103H]依次存放12 24 56 78H,[21200H]~[21203H]依次存放2A4CB7 65H,说明下列每条指令执行后寄存器的内容。
83H,0,0C1H,86H,8
它依次表示0~9这16个数码的显示代码。现编写一个程序实现将中的一个数字(0~9,)转换成对应的显示码。
4.8086/8088微处理器中有几个通用寄存器?几个变址寄存器?有几个指针寄存器?几个段寄存器?
答:8个通用寄存器、、、、、、、。2个变址寄存器、。2个指针寄存器、。、、、段地址寄存器。
5.8086/8088微处理器中有哪些标志位?它们的含义和作用如何?
答:零标志位、进位标志、溢出标志位、辅助进位标志位、奇偶标志位、符号标志位、方向标志位、中断允许标志位、跟踪标志。
20.假设2000H,1256H,528,位移量20A1H,[232F7H]=3280H,[264E5H]=2450H,试问执行下列段内间接转移指令后,转移的目的地址是什么?
(1)
(2)[]
(3)[][]
解:(1) ,目标地址的偏移量在中,所以转移的目的地址是:1256H(也可以直接写成有效地址1256H)。
(5),
答:数据类型不匹配,是8位的,是16位变量。
(6)
答:是变量,其指的单元中存放的是操作数,不能用做跳转入口。
8.是个常数,请问下列语句中两个操作有什么不同?
, 0
答:第一个是指令语句,在程序运行时才执行,第二个是逻辑运算符,是在汇编时就对两个常量完成的关系运算。
选做题
22题(P184).编写程序完成两个已知双精度(4B)A和B相加,并将结果存入双精度变量单元中(不考虑溢出)
答:①编辑。使用文本编辑器。产生汇编源程序文件:文件名。源文件是文本文件。
②汇编。使用汇编程序,如或,排除程序中的语法错误。产生目标文件:文件名。目标文件是二进制文件,是不能执行的文件。
③连接。使用。产生可执行文件:文件名.
④调试。使用。本身不产生文件,是对连接产生的可执行进行调试,排除程序中的算法错误,保证可执行文件的正确性。
23.假设和存放的是有符号数,和存放的是无符号数,请用比较指令和条件转移指令实现以下判断:
(1)若>,转到执行;
(2)若>,转到执行;
(3)若0,转到执行;
(4)若产生溢出,转到执行;
(5)若≤,转到执行;
(6)若≤,转到执行。
解:(1)
(2)
(3) ,0
(4)
(5)
(6)
选做题
14题(P107).已知数据段500600H中存放了一字符串,说明下列程序段执行后的结果。