实验报告Word文档下载推荐.docx

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

实验报告Word文档下载推荐.docx

《实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验报告Word文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。

实验报告Word文档下载推荐.docx

此外,为了便于统一管理硬盘中的文件,要求实验者按以下形式命名实验文件:

字母学号后4位.asm

其中字母取a~z中的一个字母,按实验顺序从a至z排列。

如学号为0431学生的第二个实验程序所对应的文件名应为b0431.asm。

3.程序调试完后,须由实验指导教师在机器上检查运行结果。

每个实验完成后,应写出实验报告。

四、实验环境(包括软、硬件平台)

DOS环境,计算机

五、实验步骤或程序(注:

硬件实验包括电路原理图)

(一)、用编辑程序建立扩展名为asm源程序文件

DATASEGMENT

BUFDB47H,6AH

SUMDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,BUF

ADDAL,BUF+1

MOVSUM,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(二)、用汇编程序对源文件汇编产生扩展名为obj目标文件

C:

\MASM>

masmabc↙

(三)、用连接程序link.exe产生扩展名为exe执行文件

C:

linkabc↙

(四)、运行程序

abc↙

(五)、程序调试及结果查看

(如不够,请另附纸)

六、实验结果

1.把程序装入内存,并显示程序清单

debugabc.exe↙

-

此时,debug已将执行程序装入内存,可键入debug的有关命令调试程序。

-U↙用反汇编命令U列出程序清单

13E3:

0000B8E213MOVAX,13E2

00038ED8MOVDS,AX

0005A00000MOVAL,[0000]

000802060100ADDAL,[0001]

000CA20200MOV[0002],AL

000FB44CMOVAH,4CH

0011CD21INT21

……

2.查看数据段内容或查看寄存器内容

-D13E2:

0000↙用D命令查看数据段内容

13E2:

0000476A000000000000-0000000000000000Gj..............

可见0000、0001单元内容为数据段定义的内容,分别为47H、6AH。

DEBUG状态下,缺省数制为十六进制数。

-R↙用R命令查看寄存器内容

AX=13E2BX=0000CX=0023DX=0000SP=0000BP=0000SI=0000DI=0000

DS=13D2ES=13D2SS=13E2CS=13E3IP=0003NVUPEIPLNZNAPONC

若查看指定寄存器内容,在R命令后跟上寄存器名,例:

-RAX↙用R命令查看寄存器AX的内容

AX13E2

↙ 

若需修改AX的值,则键入新值;

若无需更改,按回车。

3.用G命令连续运行程序,查看结果

-G=0000,000F↙运行程序,0000为运行程序起始地址,000F为断点地址

-DDS:

0000↙用D命令查看数据段内存结果

0000476AB100000000000000000000000000

可见0002单元中内容已变为0000和0001两单元内容之和。

4.如果连续得不到正确结果,需分步跟踪运行

-T=0000↙0000这所需要运行指令的地址

显示单步执行后寄存器和标志状态之后,停在下一条指令开始处。

-T↙顺序运行下一条指令

5.退出DEBUG

-Q↙

七、实验存在问题和解决办法

存在问题:

运行程序时程序能够运行但不能得到预期结果。

解决办法:

静态查错即检查源程序,并对源程序进行修改,然后再汇编、连接、运行。

如果静态检查无法发现错误,则需动态查错。

八、实验心得和建议

学习了程序设计的基本方法和技能。

进一步加深对微机接口芯片原理及工作过程的理解。

学习了用汇编语言设计、编写、调试和运行程序的方法。

九、教师评语及成绩

教师签字:

    年月日

循环程序设计

1.熟悉汇编语言运行、调试环境及方法。

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

3.掌握DOS功能调用显示输出的使用方法。

4.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。

三、实验内容及要求

(一)、在数据段中有从STRING单元开始存放的100个字节数据,编写程序要求将字符串中的大写字母转换为小写字母,并显示到屏幕上。

(二)、用表格形式显示字符:

按15行×

16列的表格形式显示ASCII码为10H~FFH的所有字符。

每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII码为0)分隔。

<

一>

DATASEGMENT

STRDB'

ABCDEFGhijkLMNopQRSTUVWxyZ$'

DATAENDS

CODESEGMENT

START:

MOVAX,DATA

LEABX,STR

A1:

MOVAL,[BX]

CMPAL,'

$'

JESHOW

A'

JBNEXT

Z'

JANEXT

ADDAL,20H

MOV[BX],AL

NEXT:

INCBX

JMPA1

SHOW:

LEADX,STR

MOVAH,9

MOVAX,4C00H

CODEENDS

二>

CODESEGMENT

CODE

START:

MOVCL,15

MOVCH,16

MOVBL,10H

A1:

MOVDL,BL

INCBL

MOVAH,02H

MOVDL,0

MOVAH,02H

INT21H

DECCH

JNZA1

MOVDL,0DH

INT21H

MOVDL,0AH

MOVCH,16

CMPBL,0FFH

DECCL

JNZA1

MOVAH,4CH

INT21H

ENDSTART*

程序一:

检查发现第16行的“ADDAL,20H”将数字0写成了大写字母O,排除错误后可正常运行。

字符串后忘了加$,导致转换为小写字母后出现如下乱码:

字符串后加结束符$后乱码消除。

程序二:

分析表明第28行“CMPBL,0FFH”中FFH前要加0

编写程序时要养成良好的习惯,如0和O注意区分,注意搞清、搞懂程序的细节如$等的作用,多动手调试、找出错误的原因

分支程序设计

1、掌握分支程序的设计方法。

2、掌握键盘输入DOS功能调用的使用方法。

3.掌握二进制转换为十进制的方法

(一)、通过键盘输入一行字节数据并存入BUFF缓冲区中,编写程序分别统计BUFF中正数和负数的个数,并分别存放到PLUS和MINUS单元中。

(二)、程序接收用户键入的一行字符(个数<

80,字符串以回车结束),按字母、数字及其它字符分类统计,并以十进制数形式显示统计结果。

DATASEGMENT

BUFFDB80

DB?

DB80DUP(?

COUNTEQU$-(BUFF+2)

LETTERDB0

DIGITDB0

OTHERDB0

TISHIDB'

Pleaseinputstring:

A1DB'

Letter:

A2DB'

Digit:

A3DB'

Other:

A4DB'

Sum:

ASSUMEDS:

DATA,CS:

LEADX,TISHI

INT21H;

显示提示语句Pleaseinputstring:

LEADX,BUFF

MOVAH,0AH

等待输入一串字符

LEADI,BUFF+2

MOVCL,BUFF+1

LEABX,LETTER

LOOP1:

CMPBYTEPTR[DI],'

0'

;

分支程序判断是字符、数字,还是其它。

JAENEXT1

INCBYTEPTR[BX+2]

INCDI

DECCX

JNZLOOP1

JMPSHOW

NEXT1:

9'

JANEXT2

INCBYTEPTR[BX+1]

NEXT2:

JGENEXT3

INCBYTEPTR[BX+2]

NEXT3:

JGNEXT4

INCBYTEPTR[BX]

NEXT4:

a'

JGENEXT5

INCBYTEPTR[BX+2]

NEXT5:

z'

JGNEXT6

INCBYTEPTR[BX]

NEXT6:

MOVAH,2

MOVAH,2

显示换行和回车

LEADX,A1

显示提示符Letter

MOVAL,BYTEPTR[BX]

ANDAX,00FFH

MOVCL,10

DIVCL

MOVCH,AH

ADDAL,30H

MOVDL,AL

取出Letter的十位,转换为ASCII吗并显示

MOVAL,CH

取出Letter的个位,转换为ASCII吗并显示

MOVDL,0AH;

取出Digit的十、个位,转换为ASCII吗并显示,具体同上

LEADX,A2

MOVAH,9

INT21H

MOVAL,BYTEPTR[BX+1]

ANDAX,00FFH

MOVCL,10

DIVCL

MOVCH,AH

ADDAL,30H

MOVDL,AL;

//

MOVAH,2

INT21H

MOVAL,CH

MOVDL,AL;

INT21H

MOVDL,0AH;

取出Other的十、个位,转换为ASCII吗并显示,具体同上

LEADX,A3

MOVAL,BYTEPTR[BX+2]

取出Sum的十、个位,转换为ASCII吗并显示,具体同上

LEADX,A4

MOVAL,BUFF+1

MOVCL,10

DIVCL

MOVDL,AL

MOVAL,CH

分析表明错误原因如下:

(1)O写成0;

(2)相对寻址只限于用SI、DI、BX、BP,而程序中却用了其它寄存器。

修改后仍有错误如下:

错误原因:

使用“INCBYTEPTR[BX+2]”忘了加BYTEPTR

修改后仍得不到正确结果,错误如下:

“CMP[DI],'

”应改成“CMPBYTEPTR[DI],'

错误全部修改后得到所要的结果

很多知识的细节只有在编程实践中才能发现,这次的程序较长,发了好长时间才将错误全部排出,但从中也学会了很多东西。

子程序设计

1.掌握子程序的设计方法。

2.掌握十六进制转换二进制、二进制转换为十进制的方法

(一)、用子程序调用的形式,编写程序从键盘键入0~FFFFH之间的十六进制数,并存放到存储器中。

(二)、从键盘键入0~FFFFH之间的十六进制数,并转换成十进制在屏幕上显示出来。

DB0

A0DW16

Pleaseinputhexnumber:

decnumber:

ANDCX,00FFH

CALLHEXIBIN

CALLCRLF

CALLBINIDEC

------------------------------------------------将ASCII码转换为数值

HEXIBINPROC

MOVBX,0

MOVAX,0

MULA0;

不能为立即数。

SUBBYTEPTR[DI],30H

ADDAL,[DI]

LOOPLOOP1

MOVBX,AX

RET

HEXIBINENDP

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

------------------------------------------------输出换行、空格

CRLFPROC

CRLFENDP

-----------------------------------------------将二进制转换为十进制并显示

BINIDECPROC

LEADX,A1;

输出提示符decnumber

MOVDX,0;

万位

MOVAX,BX

MOVCX,10000

DIVCX

MOVBX,DX

千位

MOVCX,1000

百位

MOVCX,100

MOVAL,BL;

十位

MOVAL,CH;

个位

BINIDECENDP

MOVCL

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

当前位置:首页 > PPT模板 > 中国风

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

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