第4章 汇编语言程序设计.docx

上传人:b****6 文档编号:7153814 上传时间:2023-01-21 格式:DOCX 页数:40 大小:47.90KB
下载 相关 举报
第4章 汇编语言程序设计.docx_第1页
第1页 / 共40页
第4章 汇编语言程序设计.docx_第2页
第2页 / 共40页
第4章 汇编语言程序设计.docx_第3页
第3页 / 共40页
第4章 汇编语言程序设计.docx_第4页
第4页 / 共40页
第4章 汇编语言程序设计.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

第4章 汇编语言程序设计.docx

《第4章 汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《第4章 汇编语言程序设计.docx(40页珍藏版)》请在冰豆网上搜索。

第4章 汇编语言程序设计.docx

第4章汇编语言程序设计

习题4

1.什么是“三种基本结构”?

解释“基本”两个字在其中的含义。

答:

三种基本结构指:

顺序结构,选择结构、循环结构。

使用这3种结构,可以编制出任何所需要的程序,因此冠以“基本”结构。

2.什么叫做“控制转移指令”?

它和数据传送、运算指令有什么区别?

它是怎样实现它的功能的?

答:

控制转移指令是可以改变指令执行顺序的指令。

数据传送、运算指令总是顺序执行的,而控制转移指令通过改变和/或寄存器的值,改变了程序指令的执行顺序。

3.指令“”和“[]”作用有什么不同?

请说明。

答:

上述两条指令都是段内近转移指令,但是偏移地址的来源不同。

指令“”执行时,新的偏移地址在寄存器内,“[]”时,目的偏移地址在存储单元中,该存储单元的地址在:

中。

4.已知()=836,X分别取下列值,执行“,X”后,标志位、、、各是什么?

(1)3000H

(2)8000H(3)7(4)0(5)0

答:

上述指令执行后,标志位、、、的状态分别是:

(1)0010

(2)0000(3)0010(4)0101

(5)0001

5.已知()=836,X分别取下列值,执行“,X”后,标志位、、、各是什么?

(1)0001H

(2)8000H(3)0007H(4)0(5)0

答:

上述指令执行后,标志位、、、的状态分别是:

(1)0000

(2)0001(3)0000(4)0001

(5)1000

6.测试名为X的一个字节,如果X的第1,3位均为1,转移到L1,如果只有一位为1,转移到L2,如果两位全为0,转移到L3。

写出对应的指令序列。

答:

AL,X

AL,00001010B

L3

AL,00001010B

L1

L2

7.假设X和2字单元存放有双精度数P,Y和2字单元存放有双精度数Q,下面程序完成了什么工作?

2

X;双精度数P送入,

X

2;计算2*P送入,

2;2P与Q的高位比较

L2;2P

(2)

L1;2P>Q,转L1

(1)

Y;如果高位相等,则比较低位

L2;2P的低位小于等于Q的低位,转L2

(2)

L1:

Z,1

L2:

Z,2

:

……

答:

程序根据2P与Q的大小,确定Z的值。

如果2P≤Q,则2

如果2P>Q,则1

请参阅程序注解

8.编写指令序列,将和中较大的绝对值存入,较小的绝对值存入。

答:

1

1:

2

2:

3

3:

……

9.编写指令序列,比较、中的数的绝对值,绝对值较大的数存入,绝对值较小的数存入。

答:

1

1:

2

2:

3

3:

……

 

10.编写指令序列,如果寄存器存放的是小写字母,把它转换成大写字母,否则不改变内容。

答:

AL,‘a’

AL,‘z’

AL,‘a’-‘A’

:

……

11.计算分段函数:

X的值从键盘输入,Y的值送显示器输出。

答:

10,0,‘X:

$’

20,0,‘:

$’

:

:

:

1

;输入X的值

-2

L2

L1:

3;←3

L2:

3

L3

;←2X

;←4X

;←5X

6;←56

L3:

2;←2

:

2

;输出Y的值

4C00H

21H

 

12.计算分段函数:

A,B的值从键盘输入,Y的值送显示器输出(∧表示“并且”,∨表示“或者”)。

答:

10,0,‘A:

$’

20,0,‘B:

$’

30,0,‘:

$’

A?

B?

:

:

:

1

;输入A

A,

2

;输入B

B,

L1;B<0,转L1

A,0

L1;A<0,转L1

1

B,0

L2;00,转L2

;0B≠0,无定义,转

1:

B,0

;A≠00,无定义,转

L3:

A

B

L2:

2

L1:

A

B

:

2

;输出Y的值

:

4C00H

21H

说明:

如果把A、B看作是平面直角坐标的两根轴,那么这个函数在A,B的正轴上无定义。

无法计算,也无法输出结果。

13.编写程序,求10元素字数组中绝对值最小的数,存入单元。

答:

-56,+12,88,-126,-5,16,32,-99,72,-18

?

?

:

:

:

;将数组第一个元素假设为绝对值最小的数

32767;最小的绝对值假设为32767

10

:

[]

0

1

;求绝对值

1:

;绝对值与假设的最小绝对值比较

2;假设的绝对值较小,跳过

;保存新的最小绝对值

[];取出新的绝对值最小的数

;保留新的绝对值最小的数

2:

2

4C00H

21H

说明:

一定要预设最小的绝对值和绝对值最小的数,而且这个绝对值最小的数必须来自数组。

14.编写程序,求20元素无符号字数组中最小的奇数,存入单元,如果不存在奇数,将单元清零。

答:

56,12,88,126,5,16,32,99,72,18

116,34,92,32,156,42,816,16,15,218

?

:

:

:

0

65535;将65535假设为最小的奇数

20

:

[]

1;测试是否为奇数

;不是奇数跳过

;记录奇数个数

;奇数与预设的最小奇数比较

;大于预设奇数,跳过

;小于预设奇数,保留

:

2

0;判有无出现过奇数

0;未出现过,把单元清零

:

4C00H

21H

15.一个有符号字数组以0为结束标志,求这个数组的:

最大值、最小值、平均值。

答:

-56,+12,88,-126,-5,16,32,-99,72,-18,0

?

?

?

:

:

:

32767;将32767假设为最小的数

-32768;将-32768假设为最大的数

0;用作累加器,清零

0

:

[]

0

;找到零元素,转结束处理

;纪录非零元素个数

;累加

1

.;比预设最小值还小,保留

1:

2

;比预设最大值还大,保留

2:

2

:

;元素个数为零,转处理

;计算平均值

:

0;元素个数为0,将“最大值”、“最小值”

0;“平均值”清零

0

:

4C00H

21H

16.数组中存有一个班级40名学生的英语课程成绩。

按照0~59,60~74,75~84,85~100统计各分数段人数,存入N0,N1,N2,N3变量内。

答:

40(?

);运行前置入具体数据

N0?

N1?

N2?

N3?

:

:

:

N0,0;各计数器清零

N1,0

N2,0

N3,0

40

:

[]

59;分段测试

L1

L0:

N0

L1:

74

L2

N1

L2:

84

L3

N2

L3:

100

N3

:

2

:

4C00H

21H

17.是一个16个字符组成的字符串,是一个字整数。

编写程序,测试中的每一个字符,如果该字符为数字字符,把中对应位置1,否则置0。

答:

16(?

);运行前置入具体字符

?

:

:

:

0;置为初始状态

16

:

1;右侧空出一位

[]

‘0’;测试是否数字

AL,‘9’

1;将对应位置1

:

:

4C00H

21H

18.编写程序,从键盘上输入一个无符号字整数,用“四进制”格式输出它的值(也就是,每2位二进制看作一位四进制数,使用数字0~3)。

答:

10,0,‘a:

$’

20,0,‘:

$’

:

:

:

1

;输入一个无符号整数

;转存到

2

9

21H;输出前导信息

8

:

1

1;最高2位移到最低位

;转存到

00000011B;保留最低2位

30H;转换成代码

2

21H;输出

4C00H

21H

19.编写程序,把一个30个元素的有符号字数组按照各元素的正负分别送入数组P和M,正数和零元素送P数组,负数送M数组。

答:

30(?

);汇编之前置入数据

P30(?

M30(?

:

:

:

;数组指针

0;P数组指针

0;M数组指针

30

:

[];从数组取出一个数据

AL

;正数、零转

:

M[],;负数存入M数组

2

:

P[],;正数、零存入P数组

2

:

2

4C00H

21H

20.缓冲区中存放有字符串,以0为结束标志。

编写程序,把字符串中的大写字母转换成小写字母。

答:

‘A.’,0

:

:

:

;缓冲区指针

:

[];从缓冲区取出一个字符

AL,AL

;为零,处理完成

AL,‘A’

‘Z’

AL,‘a’-‘A’

[],

:

:

4C00H

21H

21.编写程序,从键盘上输入无符号字整数X,Y的值,进行的运算,然后按以下格式显示运算结果和运算后对应标志位的状态。

,,,

(其中X为十进制数字,Y为0或1)

答:

:

10,0,‘a:

$’

20,0,‘$’

30,0,‘’

?

‘,’

?

‘,’

?

‘,’

?

0,0,‘$’

:

1

;输入X

1

;输入Y

;求和

;保留标志位状态

2

;输出两个数的和

;标志寄存器内容转存入

AL,‘0’

1000000B;测试

1

AL

1:

ZF,AL

AL,‘0’

100000000000B;测试

2

AL

2:

AL

AL,‘0’

10000000B;测试

3

AL

3:

AL,‘0’

1;测试

4

AL

4:

3

9

21H;输出标志位状态

4C00H

21H

22.编写程序,从键盘上输入一个字符串,统计其中数字字符,小写字母,大写字母,空格的个数并显示。

答:

:

10,0,‘a:

$’

81,?

81(?

20,0,‘:

$’

30,0,‘:

$’

40,0,‘:

$’

50,0,‘:

$’

:

1

09H

21H;输出提示信息

0

21H;输入字符串

;各计数器清零

1

0;字符个数送

2;设置字符指针

:

[];取出一个字符

AL,‘‘

L2

L1:

;空格字符计数

L2:

AL,‘0’

AL,‘9’

L4

L3:

;数字字符计数

L4:

AL,‘A’

‘Z’

L6

L5:

;大写字符计数

L6:

AL,‘a’

AL,‘z’

;小写字母计数

:

;循环控制

2

0

;输出数字字符个数

4

0

;输出小写字母个数

3

0

;输出大写字母个数

AL,

0

5

;输出空格个数

4C00H

21H

23.编写程序,读入20个数据,统计每个相同数据出现的次数。

答:

20(?

20(?

0,0,‘a.$’

:

:

:

20

1

:

;输出提示信息和序号

-1

;输入一项数据

[],;保存成绩

2

LOOP

20

:

[],-1;将“出现次数”初始值设为-1

2

LOOP

0;为被统计数据指针

20

0:

20

0;为其它数据的指针

[];取出被统计数据

1:

[];与其他数据相比较

[];出现相同数据,次数加1

:

2

1;比较下一个数据

2

LOOP0

4C00H

21H

24.编写程序,打印九九乘法表。

答:

:

‘$’;乘积不足两位时补一个空格

:

1;为被乘数

9

0:

9

1;为乘数

1:

-1

10

;乘积不足两位时补一个空格

:

;输出乘积

LOOP1

;结束一行

LOOP0

4C00H

21H

子程序输出时,数据前后各留出一个空格。

程序中对一位数的乘积补上一个空格,这样每个数据共占用4个字符位置,使输出对齐。

25.编写程序,显示1000以内的所有素数。

答:

:

:

2;为被测试的1000以内的整数

0;记录一行上已输出数据个数(每行输出10个素数)

:

1;计算测试范围

2;第一个测试数据

:

;测试完成?

;测试完成,是素数,转

;除法测试

0

;整除,本数据非素数,转

;形成下一个测试数据

;继续测试

:

;统计本行输出数据个数

10

;本行数据未满10个,直接输出

;本行数据已满10个,清计数器

;输出回车换行

-1

;输出一个素数

:

;产生下一个被测试数据

1000

;未完成,继续

;结束一行

4C00H

21H

26.编写程序,输入N,计算:

1*2+2*3+……+

(1)*N

答:

:

10,0,‘N:

$’

20,0,‘$’

:

1

;输入N

;用作累加器

:

;计算J*

(1)

;累加

2

;输出结果

4C00H

21H

27.编写程序,输入N,输出如下矩阵(设5)

11111

22221

33321

44321

54321

答:

设I为行(1~5),J为列(1~5),则(I,J)位置上的数据为:

I>(6)?

I:

6。

:

:

1;为行号

:

5;为6-列号

:

;判断当前位置

:

;下半三角,取6-列号

:

;上半三角,取行号

:

-1

;输出一个数据

COL

;结束本行

;修改行号

5

;未满5行,继续

4C00H

21H

28.根据下面条件,画出每次调用子程序或返回时的堆栈状态。

(1)主程序调用属性的1子程序,返回的偏移地址为1200H.

(2)进入1后调用属性的2子程序,返回的偏移地址为2200H.

(3)进入2后调用属性的3子程序,返回的段基址为4000H,偏移地址为0200H。

(4)从3返回2后。

(5)从2返回1后。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1