汇编语言程序设计上机实验.docx

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

汇编语言程序设计上机实验.docx

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

汇编语言程序设计上机实验.docx

汇编语言程序设计上机实验

实验报告

 

汇编语言程序设计实验报告

 

班级

学号

姓名

指导教师陆勤

实验一汇编语言运行环境及方法、简单程序设计

1、程序说明

本程序用来比较两个字符串string1和string2所含的字符是否相同。

若相同则显示‘Match’,否则显示‘Nomatch’。

在程序的数据段先定义两个字符串string1和string2,再定义两个字符串mess1和mess2,分别代表‘Match’和‘Nomatch’。

再代码段比较字符串string1和string2,通过比较判断是否相同。

若相同则显示‘Match’,否则显示‘Nomatch’

2、结合你的调试过程,整理其中用到的debug命令的使用方法和效果截图,并解释每一步骤的结论

用汇编程序masm对源文件汇编产生目标文件objC:

\masm5\sample

用连接程序link尝试执行文件exe

执行程序

使用debug程序调试

-g命令运行程序

-u命令显示程序,了解命令地址

-g0b将断点设置在程序的主要部分以前

-d0根据其中只是的ds寄存器内容查看数据段情况,显示地址0及地址0后面数据

e命令修改数据区的字符串

q命令退出debug

t命令逐条跟踪程序的执行

e命令修改一段字符串

3、调试中遇到的问题及解决方法

E命令修改数据区的一个字符,而不是一段字符串

实验二用DEBUG编程:

使用堆栈段将

AX和BX的内容进行交换等

一、程序说明:

1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;编一程序段将AX和BX的内容进行交换。

请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。

2、设DS=当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。

在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。

2、调试说明第一部分先将程序编好后,在DOS环境下用masm程序生成obj文件,再用link程序生成exe文件,然后进入debug进行调试,用-t命令逐步运行程序,查看AX和BX中内容的变化。

如果发现AX和BX中的内容进行了交换,则说明程序运行成功。

进入debug程序,先用—u指令查看一下程序,结果如下:

用—t指令逐步调试,结果如下:

第二部分:

如前面第一章最终生成可执行程序。

也可进入进入debug进行编写,如下:

三:

程序清单和执行结果:

第一个程序清单:

DATASSEGMENT

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVAX,3000H

MOVBX,5000H

PUSHAX

MOVAX,BX

POPBX

MOVAH,4CH

INT21HCODESENDS

ENDSTART

在debug中进行调试,逐步执行结果:

第二个程序清单:

DATASSEGMENT

DATASENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

START:

MOVAX,DATAS

MOVDS,AX

MOVBX,0300h

MOVSI,0002h

MOVAH,4CH

INT21HCODESENDS

ENDSTART

在debug中进行调试,逐步执行结果:

实验三、存储器块清零和内存块移动

1、程序说明:

第一个程序是存储块清零。

程序流程大概为首先设置起始地址,然后设置块长度,然后将当前地址内容清零,地址加1,然后查看是否清除完全,若没有则回到当前地址清零,然后再查看,直到地址内容清除完,结束程序。

第二个程序是内存块移动。

程序流程框图为:

首先设置块的源地址,然后设置筷的目的地址,然后再设置移动长度,然后按长度重复传送数据,然后结束。

2、调试说明:

第一个程序在进入debug后,先用-u指令查看一下程序,再将断点设置在指令Loopagain之后,通过指令-g加上指令Loopagain后的地址,将程序运行到Loopagain之后停止,然后再通过-d指令查看相关内存内容是否被清零。

第二个程序在进入到debug后,先用-u指令查看一下程序,再将断点设置在指令repmovsb之前,通过指令-g运行后,然后用-d指令查看一下内存块的相关内容,得到的结果如下:

三:

源程序代码和执行结果:

实验一:

datasegment

blockdb256dup(55h)

dataends

codesegment

assumecs:

code,ds:

data

startprocnear

movax,data

movds,ax

movbx,offsetblock

movcx,256

again:

mov[bx],byteptr0

incbx

loopagain

jmp$

codeends

endstart

实验二:

源代码:

地址块加一方法移动块的源程序:

DATASSEGMENT

sourcedb256dup(055h)

targetdb256dup(0aah)

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,ES:

DATAS,SS:

STACKSSTART:

MOVAX,DATAS

MOVDS,AX

MOVES,AX

movsi,offsetsource

movdi,offsettarget

movcx,256

repmovsb

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

第二部分地址块减一方法移动块的源程序:

DATASSEGMENT

sourcedb256dup(055h)t

argetdb256dup(0aah)

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,ES:

DATAS,SS:

STACKSSTART:

MOVAX,DATAS

MOVDS,AX

MOVES,AX

movsi,offsetsource

addsi,255

movdi,offsettarget

movcx,256

next:

moval,[si]

mov[di],al

decsi

incdi

loopnext

movah,0

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

执行结果:

实验四将键盘输入的小写字母用大写字母显示出来

1、程序说明

本程序用来将小写字母转变为大写,并在屏幕上显示出来。

先利用DOS功能调用INT21H的1号功能从键盘输入字符,然后判断输入的是否是小写字母,若不是小写字母,则显示输入出错,重新输入。

若输入的是小写字母,则通过将其减去20h,从而变为大写字母。

在通过DOS功能调用INT21H的2号功能显示出来。

若输入的是Enter键,则结束程序。

二、调试说明

调试程序可以在debug中进行,基本步骤和前面的实验大致相同,在软件Masm集成实验环境2008.4中编辑程序,则可以直接点击程序上的调试按钮,即可进行调试。

调试时可通过-t指令来逐步运行程序,观察相关内容变化,来调试程序。

三:

源程序代码和执行结果:

DATASSEGMENT

string1db'thisnotisazimu!

Pleaseinputbetweenatoz!

',0ah,0dh,'$'

string2db'$'

DATASENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

START:

MOVAX,DATAS

MOVDS,AX

L0:

movah,1

int21h

cmpal,0dh

jzexit

cmpal,'a'

jaeL1

jbL3

L1:

cmpal,'z'

jnaL2

jaL3

L2:

subal,20h

movcl,al

leadx,string2

movah,9int21h

movdl,0

movdl,cl

movah,2

int21h

movdl,0ah

movah,2

int21h

movdl,0dh

movah,2

int21h

jmpL0

L3:

leadx,string1

movah,9

int21h

jmpL0

exit:

MOVAH,4CH

int21H

codesends

endstart

运行结果:

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

当前位置:首页 > 医药卫生 > 基础医学

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

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