实验2汇编语言程序上机过程讲课稿.docx

上传人:b****4 文档编号:4164870 上传时间:2023-05-06 格式:DOCX 页数:14 大小:112.94KB
下载 相关 举报
实验2汇编语言程序上机过程讲课稿.docx_第1页
第1页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第2页
第2页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第3页
第3页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第4页
第4页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第5页
第5页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第6页
第6页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第7页
第7页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第8页
第8页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第9页
第9页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第10页
第10页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第11页
第11页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第12页
第12页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第13页
第13页 / 共14页
实验2汇编语言程序上机过程讲课稿.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验2汇编语言程序上机过程讲课稿.docx

《实验2汇编语言程序上机过程讲课稿.docx》由会员分享,可在线阅读,更多相关《实验2汇编语言程序上机过程讲课稿.docx(14页珍藏版)》请在冰点文库上搜索。

实验2汇编语言程序上机过程讲课稿.docx

实验2汇编语言程序上机过程讲课稿

 

实验2-汇编语言程序上机过程

南昌大学汇编语言程序设计实验报告

学生姓名:

学号:

专业班级:

实验类型:

□验证□综合□设计□创新实验日期:

实验成绩:

实验2汇编语言程序上机过程

一.实验目的

熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。

了解汇编语言程序的汇编、运行环境。

二.实验内容

1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用;

2.伪指令:

SEGMENT,ENDS,ASSUME,END,OFFSET,DUP;

3.利用的INT21H的1号功能实现键盘输入的方法;

三.实验要求

1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容;

2.了解利用的INT21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT21H4C号功能返回系统的方法;

3.阅读下面程序段。

四.实验环境

PC微机

DOS操作系统或Windows操作系统

MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境

五.实验步骤

1、按步骤完成下列程序的编译、连接、运行及调试等过程:

datasegment

messagedb'Thisisasampleprogramofkeyboardanddisplay'

db0dh,0ah,'Pleasestrikethekey!

',0dh,0ah,'$'

dataends

stacksegmentparastack'stack'

db50dup(?

stackends

codesegment

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax

movdx,offsetmessage

movah,9

int21h

again:

movah,1

int21h

cmpal,1bh

jeexit

cmpal,61h

jcdisplay

cmpal,7ah

jadisplay

andal,11011111b

display:

movdl,al

movah,2

int21h

jmpagain

exit:

movah,4ch

int21h

codeends

endstart

实验步骤:

1.用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。

2.用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。

若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。

3.用TYPE命令显示1产生的.LST文件。

4.用LINK将.OBJ文件连接成可执行的.EXE文件。

5.在DOS状态下运行LINK产生的.EXE文件。

即在屏幕上显示标题并提示你按键。

每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。

按ESC键可返回DOS。

若未出现预期结果,用DEBUG检查程序。

6.将程序修改,使得用户键入除小写字母以外的其他字符(除ESC键),输出提示信息“Illegalcharacterisstriked,Pleaseinputagain!

”,并要求重新输入。

datasegment

messagedb'thisisasampleprogramofkeyboardanddisplay'

db0dh,0ah,'pleasestrikethekey!

',0dh,0ah,'$'

message2db'Illegalcharacterisstriked,Pleaseinputagain!

'

db0dh,0ah,'pleasestrikethekey!

',0dh,0ah,'$'

dataends

stacksegmentparastack'stack'

db50dup(?

stackends

codesegment

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax

movdx,offsetmessage

movah,9

int21h

again:

movah,1

int21h

cmpal,1bh

jeexit;如果输入是esc就退出

cmpal,61h

jcdisplay2;如果输入小于"a"

cmpal,7ah

jadisplay2;如果输入大于"z"

andal,11011111b

display:

movdl,al;直接输出

movah,2

int21h

jmpagain

display2:

movax,data;如果不是小写字母输出“重新再输”指令

movds,ax

movdx,offsetmessage2

movah,9

int21h

jmpagain

exit:

movah,4ch

int21h

codeends

endstart

2.下面程序任务是完成查表求一个十以内整数的平方,程序有错误,请进行纠正并调试运行。

DATASEGMENT

TABLEDB0,1,4,9,16,25,36,49,64,81

HEXDW5;待查的整数

RESULTDW?

DATAENDS

CDSEGMENT

ASSUMECS:

CODE,DS:

DAT

START:

MOVAX,DATA

MOVDS,AX

MOVBX,TABLE

MOVAX,HEX

ADDBX,AX

MOVAX,[BX]

MOVRESULT,AX

MOVAH,4CH

INT21H

CDENDS

ENDSTART

实验步骤

1、将该文件存成.asm文件,将其生成可执行文件。

2、编译该程序,找出错误。

并纠正。

datasegment

tabledw0,1,4,9,16,25,36,49,64,81;“db”应该改成“dw”

hexdw5;待查的整数

resultdw?

dataends

codesegment;“cd”应该改成“code”

assumecs:

code,ds:

data;“dat”应该改成“data”

start:

movax,data

movds,ax

movbx,table

movax,hex

addbx,ax

movax,[bx]

movresult,ax

movah,4ch

int21h

codeends;“cd”应该改成“code”

endstart

3、连接、运行看程序是否能得到正确结果。

若不行,用Debug加载该可执行文件,单步调试,观察各寄存器变化及RESULT单元的值。

找出问题。

4、重复汇编语言程序的上机过程,使程序能正确得到结果。

5、修改源程序,选用换码指令XLAT完成本程序相同的功能。

datasegment

tabledb0,1,4,9,16,25,36,49,64,81;把“dw”改成“db”

hexdb5;待查的整数

resultdb?

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

leabx,table;把table地址给bx

moval,hex

xlat;应用换码指令XLAT

movresult,al

movah,2

int21h

movah,4ch

int21h

codeends

endstart

曾经出现错误:

经检查,是由于红色字体部分漏写导致程序陷入循环无法出来。

补写上后成功运行。

6、补充此程序的输入和输出功能。

使得程序能任意输入数据,平方值也能以十进制显示在屏幕上。

datasegment

tabledw0,1,4,9,16,25,36,49,64,81

dataends

stacksegmentparastack'stack'

db100dup(?

stackends

codesegment

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax

moves,ax

begin:

movah,1

int21h

cmpal,1bh

jeexit;如果输入是ESC键则退出

cmpal,30h

jcbegin

cmpal,39h

jabegin;如果输入值大于9小于0则重输

subal,30h;输入值减去30h这样就变成了十进制的数字

movbx,table

pushcx

shlal,1

movah,al

incah

xlat

movcl,al

moval,ah

xlat

movch,al

movax,cx

popcx

callcr_lf

callout_ax

callcr_lf

jmpbegin

exit:

movah,4ch

int21h

out_axprocnear

pushbx

movdl,0

callout_asc

movbl,100

divbl

movdl,al

callout_asc

moval,ah

xorah,ah

movbl,10

divbl

movdl,al

callout_asc

movdl,ah

callout_asc

popbx

ret

out_axendp

out_ascprocnear

adddl,30h

callout_dl

ret

out_ascendp

cr_lfprocnear

movdl,10

callout_dl

movdl,13

callout_dl

ret

cr_lfendp

out_dlprocnear

pushax

movah,02h

int21h

popax

ret

out_dlendp

codeends

endstart

六.实验报告要求

汇编,连接及调试时产生的错误,其原因及解决办法,要求你修改的程序的清单(修改后)和调试记录;各实验中的关键数据截图。

七.简答题

1.若在源程序中把INT21H的'H'省去,会产生什么现象?

从原来的int21h去掉h后就会变成int21,因为输入默认是10进制,不加h就会变成调用中断15h了。

2.把INT21H中4CH号功能改为INT20H,行不行?

不行,会出现程序无法响应的问题。

八.实验小结

1.了解了伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的用法并且熟练应用

2.了解利用的INT21H的1号功能实现键盘输入的方法,

movah,1

int21h

了解输出显示输出的方法,

movdl,x

movah,2

int21h

了解用INT21H4C号功能返回系统的方法,

movah,4ch

int21h

3.知道了如何调试程序,当出现好几个错误的时候,很有可能是改掉前面一个错,接下来的错误都没有了,还有就是发现自己写的程序找不出问题时,可以参考书上的程序做个范例,看看自己和书上的框架是不是错了还是怎样的错误。

总之,当程序报错时,一定要很耐心的去修改,也可以和同伴互相交流讨论一下有可能出错的地方,相互学习改进。

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

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2