语言程序设计习题答案.docx
《语言程序设计习题答案.docx》由会员分享,可在线阅读,更多相关《语言程序设计习题答案.docx(24页珍藏版)》请在冰豆网上搜索。
语言程序设计习题答案
4.1分析执行下列指令序列后的结果:
1),1234H
,00
,
【答】()=0034H
2),01010101B
,00011111B;(AL)=00010101B
,11000000B;(AL)=11010101B
,00001111B;(AL)=11011010B
AL
【答】()=00100101B
3),05H
,0A00H
,
,0H
,0
:
[]
本程序实现了什么功能?
【答】在以0A001H开始的15个单元中查找05H。
4)
B1
B2
本程序实现了什么功能?
【答】将B1中N个字节数据传送到B2开始的15个存储单元。
5),0H
05H
0A000H
0
:
本程序实现了什么功能?
【答】从地址0A000H开始的15个单元中查找字节型数据05H,用条件循环,控制数据05H的查找。
4.2阅读程序:
1).
,[0100H]
0080H
本程序实现了什么功能?
【答】将中起始地址为0100H的128个字节单元清零。
2).,08H
01H;(AL)=00010000H
BL,AL
02H
;(AL)=01000000H
;(AL)=01010000H
本程序实现了什么功能?
【答】将中的内容乘以10。
4.3试分析下列程序完成什么功能?
,3F08H
,0A2H
,4
,;()080H
,
,;()=20H
,;()=02H
,;()=82H
【答】将中的低4位数据8H分离出来,将中的低4位数据2H分离出来,合并为82H存放在。
4.4已知程序段如下:
,1234H
,4
,
,4
试问:
(1)每条指令执行后,寄存器的内容是什么?
(2)每条指令执行后,,及的值分别是什么?
(3)程序运行结束时,及寄存器的值为多少?
【答】,1234H;()=1234H,0
,4
,;()=2341H10
;()=2340H,10
,4;
;()=8000H010
4.5试分析下列程序段:
,
L2
,
L3
5
如果、的内容给定如下:
(1)14C6H80(程序转向L2)
(2)B568H54B7H(程序转向5)
问该程序在上述情况下执行后,程序转向何处?
【答】
(1)程序转向L2。
(2)程序转向5。
4.6以下为某个数据段,试问各个变量分别占多少字节,该数据段共占多少字节?
19;2字节
210(?
),2;44字节
32(?
,10(?
));22字节
4‘';11字节
【答】该数据段共占79字节。
4.7下列语句在存储器中分别为变量分配多少字节空间?
并画出存储空间的分配图。
110,2;2字节
25(?
),0;12字节
3‘?
',‘$';13字节
4-1,1,0;2字节
1
2
3
4
10
?
H
2
?
O
?
W
?
?
A
01H
?
R
00H
?
E
00H
?
00H
?
Y
00H
?
O
00H
0
U
00H
0
?
00H
$
4.8编写一段程序,比较两个5字节的字符串和,若相同,在置0,否则置0。
【答】参考程序:
1,2,3,4,5
1,2,3,4,5
?
10
;串不相等转
AL,0
:
AL,0
:
AL
:
4.9编程求和1+A2+….+A100。
其中为字节变量。
【答】参考程序:
12,3,45,..
?
?
……….
0
0
;清
4
:
[];求和
:
;指向下一个数
;未加完,继续
;存和
4.10内存中以和开始的单元中分别存放着两个16位组合的十进制(码)数,低位在前。
编程序求这两个数的组合的十进制和,并存到以开始的单元。
【答】参考程序:
1325+9839=?
05H,02H,03H,01H;
09H,03H,08H,09H;
20(?
)
1100(‘’)
11
:
;初始化数据段
;初始化堆栈段
1
4;计算4次
1;取数据地址
2;取数据地址
;取结果地址
00H;将暂存标志的清0
1:
[];取第一个数
;将中的标志送标志寄存器
[];与第二个数带进位加
;十进制校正
;将标志寄存器内容送
30H;计算值拼成码
[],;存结果的码
;指向第一个数的下一位
;指向第二个数的下一位
;指向结果单元的下一位
1;未计算完,继续
01H;将最高位的进位标志送
30H;最高位的进位位拼成码
[],;存结果的最高位
02H;调用的02H功能显示
05H;显示数据的位数
2:
[];显示数据送
21H;显示
;显示数据所在存储单元加一
2;未显示完,继续
4;返回
21H
4.11试编程序,统计由40000H开始的16K个单元中所存放的字符“A“的个数,并将结果存放在中。
【答】参考程序
1''
$1
100(?
)
:
0
1
'A'
:
[]
:
4.12统计数据块中正数与负数的个数,并将正数与负数分别送到两个缓冲区。
【答】参考程序:
-13,5,62,0,20,10
8(?
);正数缓冲区
8(?
);负数缓冲区
0
0
8;数据个数送
:
←[]
80H
;为负数,转
;正数个数加一
;[]←,传正数
:
;负数个数加一
;送负数到缓冲区
:
4.13编写一个子程序将中的十六进制数,转换成码,存于开始的四个单元中。
提示:
1)、中的数从左到右,转换成码,用循环左移和指令,把提出的一个十六进制数置中;
2)、0~9的码:
30~39H,A~F的码:
41H~46H。
(先把每个数加30H,判断是否为数字0~9?
若是A~F,再加07H,得字母的码。
)
【答】参考程序:
4(?
)
:
73H;假设中存放73h
,
4
:
000
30H
'9'
:
07H
:
[]
4
4.14编写一个子程序将中的2进制数,转换成10进制码,存于开始的五个单元中。
【答】参考程序:
5555H;假设二进制数为5555H
4(?
)
100(?
)
,
:
,10000D
1000D
100D
10D
01D
04;返回
21H
;十进制转二进制,完成一位运算,十进制存于中,结果存于所指向的地址中
0
30H
[]
4.15编写一个子程序,对中的数据进行偶校验,并将经过校验的结果放回中。
【答】参考程序:
,1001110B
AL,AL
AL,0
:
AL,1
:
04
21H
4.16从2000H单元开始的区域,存放100个字节的字符串,其中有几个$符号(码为24),找出第一个$符号,送中,地址送。
【答】参考程序:
2000H
100
24H
[]
:
4.17用串操作指令实现:
先将100H个数从2170H单元处搬到1000H单元处,然后从中检索等于中字符的单元,并将此单元换成空格字符。
【答】参考程序:
24H
2170H
1000H
100H
:
1000H
100H
[],20H
0
4.18从60H个元素中寻找一个最大的值,并放到中,假设这60个元素放在1开始的单元中。
【答】参考程序:
10,1,2,3,4,5,6,7,8,9;
20(?
)
:
10
AL,0
1
:
[]
;大于等于转移
[]
:
4
21H
4.19排序程序设计:
把表中元素按值的大小升序排列。
要求显示排序前和排序后的数据。
【答】参考程序:
'8095554'
$
0,0,'!
$'
20(?
)
:
;初始化数据段
:
4
21H;返回
1;置外循环次数
1;设有交换标志
:
;
;无交换,已排好序,退出
0;无交换
1
内循环次数
0;指向表首
:
[];字符送
;指向下个字符
[];比较表中相邻字符
;小于
[];否则交换,大字符下
[1];小字符上浮
1;有交换1
:
;内循环结束1
;一次内循环完成,加一
;外循环次数减一
0
;外循环次数非零,继续
:
09H
21H;显示排好序的字符
4.20编写一段程序,接收从键盘输入的10个数,输入回车符表示结束,然后将这些数加密后存于缓冲区中。
加密表为:
输入数字:
0,1,2,3,4,5,6,7,8,9;密码数字:
7,5,9,1,3,6,8,0,2,4。
【答】参考程序:
7,5,9,1,3,6,8,0,2,4;密码表
10(?
),'$'存放转换数字的缓冲区
20(?
)
,0
1:
1;从键盘输入
21H
,0
30H
30H
[],
LOOP1
:
09H
21H
4
21H
4.21编程序从键盘接收一个4位16进制数,转换为10进制数后,送显示。
【答】算法:
先将输入的十六进制数保存到中,中的数范围在+3276732768之间,先检查中的符号位,以决定输出“+”还是“-”;若是负数,应先求补,得到原码后即可与正数作统一处理。
转换方法为将被转换的二进制数先除;以10000,商即为万位数,再将余数除以1000,商为千位数,依此类推,求出百、十位数,剩的为个位数。
最后,将各个数加上30H,即成为对应字符。
6(?
),'$'
20(?
)
:
4;输入4次
;转换4次
0;用保存输入数
1:
1;从键盘输入
21H
;通过子程序转换
;组合成十六进制数
BL,AL
1;循环输入四个数
'+'
0
L4;不是负数,转移
'-'
L4:
10000
30H;将万位转换为数字(商应在内,但因为商不大于9,所以有效部分在内)
1,;保存万位数字
;将余数置入内,以便当作被除数
1000
30H
2,;保存千位数字
;将余数置入内,以便当作被除数
100
30H
3,;保存百位数字
AL,
10
30H
4,;保存十位数字
30H
5,;保存个位数字
09H
21H
4
21H
'9';将码转换为16进制
A2;键入值≤’9’(’0’-‘9’)则减30H
'a';键入值<’a’(‘A’-‘F’)则减37H
A1
20H;值在’a’-‘f’则先减20H,再减37H
A1:
AL,7
A2:
30H
(以上参考答案由黄玉清整理)