汇编实验报告DLWord格式.docx

上传人:b****5 文档编号:17091074 上传时间:2022-11-28 格式:DOCX 页数:16 大小:231.82KB
下载 相关 举报
汇编实验报告DLWord格式.docx_第1页
第1页 / 共16页
汇编实验报告DLWord格式.docx_第2页
第2页 / 共16页
汇编实验报告DLWord格式.docx_第3页
第3页 / 共16页
汇编实验报告DLWord格式.docx_第4页
第4页 / 共16页
汇编实验报告DLWord格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

汇编实验报告DLWord格式.docx

《汇编实验报告DLWord格式.docx》由会员分享,可在线阅读,更多相关《汇编实验报告DLWord格式.docx(16页珍藏版)》请在冰豆网上搜索。

汇编实验报告DLWord格式.docx

段寄存器定义

MOVAL,W;

开始计算

SUBAL,[X];

W-X

CBW;

将AL符号扩展为AH

MOVBL,5

IDIVBL;

(W-X)/5

SUBAL,[Y]

MOVBL,R

ADDBL,2;

R+2

IMULBL;

最后的乘法运算

MOV[Z],AX;

将最后的结果送给Z

MOVAH,4CH;

返回DOS

INT21H

CODEENDS

3.程序运行结果。

2.试编写一个程序,测试某数是否是奇数。

如该数是奇数,则把DL的第0位置1,否则将该位置0。

 

XDB9

YDB?

MOVDS,AX

MOVAL,[X]

SHRDL,1

SHRAL,1

RCLDL,1

MOV[Y],DL

MOVAH,4CH

INT21H

ENDSTART

实验2分支及循环程序设计

2.掌握分支程序和循环程序的设计方法。

根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。

1.键入一数,判断该数是否在0<

X<

9范围内,是输出标志0,不是输出-1。

2.源程序清单

DATASEGMENT;

数据段

XDW0;

存放输入的数

START:

MOVAX,DATA;

将数据送入DS

INPUT:

MOVAH,1;

输入字符

CMPAL,30H;

比0小不接受

JBINPUT

CMPAL,3AH;

比9大不接受

JNBINPUT

SUBAL,30H;

将字符转换为整数

MOVAH,0

MOVX,AX;

将输入的正数赋给X

CALLENDL;

换行

MOVAX,X

CMPAX,3;

和3比较

JBNT;

比3小跳到NT

CMPAX,7;

和7比较

JANT;

比7大跳到NT

JMPIS;

否则跳到IS

IS:

MOVBL,'

0'

;

在3-7之间,显示0

MOVDL,BL

MOVAH,2

JMPEXIT;

跳到EXIT

NT:

-'

不在3-7之间,显示-1

MOVDL,BL;

先显示'

再显示'

1'

EXIT:

返回dos

;

-------------------------

ENDLPROC;

换行子程序

MOVDL,13;

回车换行

MOVDL,10

RET

ENDLENDP

---------------------------

ENDSTART

2.程序运行结果。

2.试编程统计数据区中正数、零和负数的个数。

DATASEGMENT

BUFDB-1,-2,-3,-4,-11,0,11,22,32,112;

定义一组数据

COUNTEQU$-BUF

C1DB0;

正数的个数

C2DB0;

负数的个数

C3DB0;

0的个数

MOVSI,OFFSETBUF;

BUF首地址地址传送给SI

XORDH,DH;

DI高位清零

MOVCX,COUNT;

获取数据的个数,送给CX

NEXT:

MOVAL,[SI]

CMPAL,0

JZL1;

结果为零转移到L1

JGL2;

结果大于零转移到L2

INCC2;

将将负数的个数增加1

JMPSTO;

跳转到STO

L1:

INCC3;

将0的个数增加1

JMPSTO

L2:

INCC1;

将正数的个数增加1

STO:

INCSI;

指针指向下一个数据

LOOPNEXT;

直到CX为0结束

MOVDL,C1;

输出正数的个数

ADDDL,30H

MOVAH,02

MOVDL,C2;

输出负数的个数

MOVDL,C3;

输出0的个数

3.编程求无符号数字节序列中最大值和最小值。

NUMSDB21,1,33,55;

定定义一组无符号的数

COUNTEQU$-NUMS;

计算出数据的个数

MAXDB?

存放最大值

MINDB?

存放最小值

MOVSI,OFFSETNUMS;

NUMS首地址送给SI

MOVCX,COUNT;

将数据个数送给CX

MOVAL,[SI]

MOVMAX,AL;

初始化

MOVMIN,AL

INCSI

BEGIN:

MOVAL,[SI];

开始通过下标取数

CMPAL,MAX;

和最大数比较

JAMOREMAX;

数据更大跳转到MOREMAX

CMPAL,MIN;

和最小的数比较

JBMOREMIN;

数据更小跳转到MOREMIN

JMPRE

MOREMAX:

将更大的数赋给MAX

MOREMIN:

MOVMIN,AL;

将更小的数赋给MIN

RE:

INCSI;

指针指向下一个数据T

LOOPBEGIN;

循环直到CX=0

MOVAL,MAX;

输出最大值

MOVCL,04H

SHRAL,CL

MOVDL,AL

MOVAL,MAX

ANDAL,00FH

MOVDL,AL

MOVDL,20H;

输出空格

MOVAL,MIN;

输出最小值

MOVAL,MIN

4.程序运行结果。

4.编写汇编程序,统某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。

STRINGDB'

g3tRfdtfTR34'

定义一组字符串

COUNTEQU$-STRING;

获得字符串的字符数

CHARCOUNTDB0;

记录字母的个数

装载数据

MOVSI,OFFSETSTRING;

STRING首地址送给SI

字符数COUNT送给CX

开始通过下标取字符

CMPAL,'

a'

JBCONTINUE;

比a小时,转CONTINUN继续和A,Z比较

z'

比z小时

JARE

INCCHARCOUNT;

是小写字母,加1

JMPSHORTRE;

无条件跳转

CONTINUE:

A'

和A比较

JBRE;

Z'

和Z比较

JARE;

是大写字母,也加1

取下一个字符

CX不为零时循环

MOVAL,CHARCOUNT

ADDAL,30H;

加30H得到ASCAII码

MOVDL,AL;

将统计的字符个数显示出来

5.调试过程中遇到的问题和解决的方法。

这次调试通过参照实验指导书,了解到了汇编实验的基本操作流程,汇编作为计算机的一门基础语言所具有的优越性,在调试的过程中也遇到了许多的问题,比如在做循环的时候不能够画出流程图。

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

当前位置:首页 > 小学教育 > 语文

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

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