新编汇编语言程序设计四五章习题参考解答讲解Word下载.docx

上传人:b****6 文档编号:15900090 上传时间:2022-11-16 格式:DOCX 页数:22 大小:48.51KB
下载 相关 举报
新编汇编语言程序设计四五章习题参考解答讲解Word下载.docx_第1页
第1页 / 共22页
新编汇编语言程序设计四五章习题参考解答讲解Word下载.docx_第2页
第2页 / 共22页
新编汇编语言程序设计四五章习题参考解答讲解Word下载.docx_第3页
第3页 / 共22页
新编汇编语言程序设计四五章习题参考解答讲解Word下载.docx_第4页
第4页 / 共22页
新编汇编语言程序设计四五章习题参考解答讲解Word下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

新编汇编语言程序设计四五章习题参考解答讲解Word下载.docx

《新编汇编语言程序设计四五章习题参考解答讲解Word下载.docx》由会员分享,可在线阅读,更多相关《新编汇编语言程序设计四五章习题参考解答讲解Word下载.docx(22页珍藏版)》请在冰豆网上搜索。

新编汇编语言程序设计四五章习题参考解答讲解Word下载.docx

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,MESS1

CALLREADINT;

输入X的值

CMPAX,-2

JGEL2

L1:

SUBAX,3;

AX←X-3

JMPDONE

L2:

CMPAX,3

JGL3

MOVBX,AX

ADDAX,AX;

AX←2X

AX←4X

ADDAX,BX;

AX←5X

ADDAX,6;

AX←5X+6

L3:

MOVAX,2;

AX←2

DONE:

LEADX,MESS2

CALLWRITEINT;

输出Y的值

CALLCRLF

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

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

DATASEGEMNT

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

MINDW?

MINABSDW?

MOVAX,LIST

MOVMIN,AX;

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

MOVMINABS,32767;

最小的绝对值假设为32767

LEASI,LIST

MOVCX,10

AGAIN:

MOVAX,[SI]

CMPAX,0

JGESKIP1

NEGAX;

求绝对值

SKIP1:

CMPAX,MINABS;

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

JGESKIP2;

假设的绝对值较小,跳过

MOVMINABS,AX;

保存新的最小绝对值

MOVAX,[SI];

取出新的绝对值最小的数

MOVMIN,AX;

保留新的绝对值最小的数

SKIP2:

ADDSI,2

LOOPAGAIN

MOVAX,4C00H

说明:

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

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

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

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

MAXDW?

AVGDW?

MOVMIN,32767;

将32767假设为最小的数

MOVMAX,-32768;

将-32768假设为最大的数

MOVAVG,0;

AVG用作累加器,清零

MOVCX,0

JZDONE;

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

INCCX;

纪录非零元素个数

ADDAVG,AX;

累加

CMPAX,MIN

MOVMIN.AX;

比预设最小值还小,保留

SKIP1:

CMPAX,MAX

JLESKIP2

MOVMAX,AX;

比预设最大值还大,保留

JMPAGAIN

JCXZNULL;

元素个数为零,转NULL处理

MOVAX,AVG

CWD

IDIVCX

MOVAVG,AX;

计算平均值

JMPEXIT

NULL:

MOVMIN,0;

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

MOVMAX,0;

“平均值”清零

MOVAVG,0

EXIT:

MOVAX,4C00H

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

数组,负数送M数组。

ARRAYDW30DUP(?

);

汇编之前置入数据

PDW30DUP(?

MDW30DUP(?

DATAENDS

LEABX,ARRAY;

ARRAY数组指针

MOVSI,0;

P数组指针

MOVDI,0;

M数组指针

MOVCX,30

ONE:

MOVAX,[BX];

从ARRAY数组取出一个数据

ANDAX,AL

JGEPLUS;

正数、零转PLUS

MINUS:

MOVM[DI],AX;

负数存入M数组

ADDDI,2

JMPNEXT

PLUS:

MOVP[SI],AX;

正数、零存入P数组

ADDSI,2

NEXT:

ADDBX,2

LOOPONE

4.30编写程序,输入N,计算:

S=1*2+2*3+……+(N-1)*N

CODESEGMENT

CODE

MESS1DB0DH,0AH,‘InputNplease:

MESS2DB0DH,0AH,‘S=$’

PUSHCS

POPDS

LEADX,MESS1

CALLREADDEC;

输入N

MOVCX,AX

XORBX,BX;

BX用作累加器

MOVAX,CX

MOVSI,AX

DECSI

MULSI;

计算J*(J-1)

ADDBX,AX;

MOVAX,BX

CALLWRITEDEC;

输出结果

CALLCRLF

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

11111

22221

33321

44321

54321

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

I>

(6-J)?

I:

6-J。

INCLUDEYLIB.H

MOVSI,1;

SI为行号

ROW:

MOVCX,5;

CX为6-列号

COL:

CMPSI,CX;

判断当前位置

JBUP

DOWN:

MOVAX,CX;

下半三角,取6-列号

JMPOUTPUT

UP:

MOVAX,SI;

上半三角,取行号

OUTPUT:

MOVDX,-1

CALLWRITEDEC;

输出一个数据

LOOPCOL

CALLCRLF;

结束本行

INCSI;

修改行号

CMPSI,5

JBEROW;

未满5行,继续

习题五

5.4阅读下面的程序,指出该程序计划完成的功能,同时指出程序中尚存在的错误。

CODESEGMENT

ASSUME:

CS:

START:

MOVCX,20

LOOP0:

CALLPRINTSPACE

LOOPLOOP0

MOVAH,4CH

INT21H

PRINTSPACEPROCNEAR

MOVCX,40;

该行上面添加:

PUSHCX

PSLOOP:

MOVAL,‘’

MOVAH,02H

LOOPPSLOOP

MOVAL,0AH

MOVAL,0DH

INT21H;

该行下面添加:

POPCX

RET

PRINTSPACEENDP

CODEENDS

功能:

输出20行空行,每行有40个空格。

5.6阅读下面的子程序,叙述它完成的功

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

当前位置:首页 > 工程科技 > 材料科学

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

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