汇编实验报告.docx

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

汇编实验报告.docx

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

汇编实验报告.docx

汇编实验报告

汇编语言实验报告

 

学院:

计算机学院

专业:

网络工程

指导老师:

纪平

实验一汇编语言程序调试方法

一、实验目的

1,熟悉汇编语言运行环境和方法

2,了解如何使用汇编语言编制程序

3,熟悉debug有关命令的使用方法

4,利用debug掌握有关指令的功能

5,利用debug运行简单的程序段

二、实验内容

1,学会输入、编辑汇编语言程序

2,学会对汇编语言程序进行汇编、连接和运行

3,进入和退出debug程序

4,学会debug中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。

对于U命令、N命令、W命令等,也应试一下。

三、实验准备

1,仔细阅读有关汇编语言环境的内容,事先准备好使用的例子。

2,准备好程序清单、设计好调试步骤、测试方法、对运行结果的分析

3,编写一个程序:

比较2个字符串所含的字符是否相同。

若相同则显示’Match.’,否则显示’Nomatch!

’。

4,仔细阅读有关debug命令的内容,对有关命令,都要事先准备好使用的例子。

四、实验步骤

1,在DOS提示符下,进入masm目录。

2,在MASM目录下启动edit编辑程序,输入源程序,并对其进行汇编、连接和运行。

(1)调用edit输入、编辑源程序并保存在指定的目录中。

例:

editabc.asm

(2)用汇编程序masm对源程序汇编产生目标文件obj。

例:

masmabc

(3)用连接程序link产生执行文件exe。

例:

linkabc

(4)执行程序

3,详细记录每一步所用的命令,以及查看结果的方法和具体结果。

五、实验结果

1,输入sample.asm的源码

;PROGRAMTITLEGOESHERE--Comparestring

;****************************************************************************

datareasegment;definedatasegment

string1db'Movethecursorbackward.'

string2db'Movethecursorbackward.'

;

mess1db'Match',13,10,'$'

mess2db'Nomatch!

',13,10,'$'

datareaends

;****************************************************************************

programsegment;definecodesegment

;----------------------------------------------------------------------------

mainprocfar

assumecs:

program,ds:

datarea,es:

datarea

start:

;startingexecutionaddress

;setupstackforreturn

pushds;saveolddatasegment

subax,ax;putzeroinAX

pushax;saveitonstack

;setDSregistertocurrentdatasegment

movax,datarea;datareasegmentaddr

movds,ax;intoDSregister

moves,ax;intoESregister

;MAINPARTOFPROGRAMGOESHERE

leasi,string1

leadi,string2

cld

movcx,25

repzcmpsb

jzmatch

leadx,mess2

jmpshortdisp

match:

leadx,mess1

disp:

movah,09

int21h

ret;returntoDOS

mainendp;endofmainpartofprogram

;--------------------------------------------------------------------

programends;endofcodesegment

;********************************************************************

endstart;endassembly

2,汇编生成目标文件

3,连接生成exe文件

4,执行程序

5,调试程序

-g命令在debug环境下运行该文件

-d0(-dds:

ea)命令显示指定数据段地址中的内容

-u命令显示汇编源程序

-eds:

ea更改指定位置的内容

实验二用DEBUG编程使用堆栈段

AX和BX的内容进行交换等

一、实验目的:

1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。

3、掌握简单指令的执行过程。

二、实验内容:

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中的内容是什么。

程序清单如下:

MOVAX,BX

MOVAX,0304H

MOVAX,[0304H]

MOVAX,[BX]

MOVAX,0001[BX]

MOVAX,[BX][SI]

MOVAX,0001[BX][SI]

HLT

三、实验要求:

1、实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。

2、本实验只要求在DEBUG调试程序状态下进行,包括汇编程序、调试程序和执行程序。

四、实验内容

1,用堆栈作为交换空间交换ax和bx的值

(1),debug源程序

(2),运行结果

2,按照题目要求查看运行结果

(1)在debug模式下输入源程序

(2)在debug模式下单步执行的结果

当程序执行完毕后AX保存的是最后一次的值

实验三存储器操作和系统功能调用

一、实验要求

1,指定存储器中某块的起始地址和长度,要求能将其中内容清零

2,将指定源地址和长度的存储块移动到目标位置

二、实验目的

1,掌握存储器读写方法和内存的移动方法。

2,了解存储器块的操作方法,加深对存储器读写的认识。

3,将键盘输入的小写字母用大写字母显示出来

三、实验说明

1,通过本实验,可以了解微机读写存储器的读写方法,同时也可以了解微机编程、调试方法。

如何将存储器块的内容置成某固定值。

2,块移动是计算机常用操作之一,多用于大量的数据复制和图像操作。

四、实验内容

1,存储器块清零

2,内存块移动

3,试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

五、程序流程图

1

 

 

 

2.

 

六、程序清单

1,内存块清零

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

2,内存块移动

datasegment

sourcedb256dup(055h)

targetdb256dup(0aah)

dataends

codesegment

assumecs:

code,ds:

data

startprocnear

movax,data

movds,ax

moves,ax

movsi,offsetsource

movdi,offsettarget

movcx,256

repmovsb

jmp$

codeends

endstart

3,大小写转换

CODESEGMENT

ASSUMECS:

CODE

START:

PUSHAX

MOVAH,01

INT21H

SUBAL,20H

MOVDL,AL

MOVAH,02

INT21H

POPAX

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

七、实验结果

1,存储器清零

2,内存块移动

3,大小写转换

实验四基本程序结构练习

一,实验目的

1,掌握循环程序和分支程序的设计方法

2,进一步熟悉利用debug程序修改参数的方法,并检查和验证结果的正确性

3,学会针对不同的问题,选用不同的循环组织结构方法

二、实验内容

1,编写一个小程序,显示AL寄存器中的两位十六进制数

2,编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示‘c’;若是回车字符,则结束程序,若为其它字符则不显示,继续等待新的字符输入。

三、程序清单

1,;disphex.asm

codesegment

assumecs:

code

start:

moval,3eh

pushax

movdl,al

movcl,4

shrdl,cl

cmpdl,9

jbenext1

adddl,7

next1:

adddl,30h

movah,2

int21h

popax

movdl,al

anddl,0fh

cmpdl,9

jbenext2

adddl,7

next2:

adddl,30h

movah,2

int21h

movah,4ch

int21h

codeends

endstart

2,显示键入字符程序

;dispkey.asm

codesegment

assumecs:

code

start:

movah,1

int21h

cmpal,0dh

jzdone

cmpal,'0'

jbnext

cmpal,'9'

jacharup

movdl,al

movah,2

int21h

jmpstart

charup:

cmpal,41h

jbnext

cmpal,5ah

jachardn

dispc:

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

当前位置:首页 > 表格模板 > 调查报告

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

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