汇编实验报告.docx

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

汇编实验报告.docx

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

汇编实验报告.docx

汇编实验报告

《汇编语言》

试验报告

班级

学号

姓名

指导教师

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

一、实验目的:

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

2、了解如何使用汇编语言的编制程序。

3、熟悉DEBUG有关命令的使用方法。

4、利用DEBUG掌握有关指令的功能。

5、利用DEBUG运行简单的程序段。

二、实验内容:

编写一程序:

比较两个字符串string1和string2所含的字符是否相同。

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

三、实验步骤:

1、建立程序所需要的ASM文件,并将实验指导书中的范例程序编写好。

2、用汇编程序MASM对源文件汇编产生目标文件OBJ。

3、用链接程序LINK产生执行文件EXE。

4、执行程序。

5、使用DEBUG调试程序。

分别体会g命令、r命令、t命令、u命令、d命令以及q命令的用法。

用-g命令来用运行程序,用-u命令来显示程序,用-d命令来查看数据段的情况,用-e或-f命令来修改需要改正的部分,用-t指令来逐步执行程序,用-r指令来查看寄存器和修改寄存器的值,-q命令用来退出debug程序。

在这些命令的后面加上地址,可以将命令执行到相应的地方。

在Debug中用-g运行:

用-u命令显示程序:

-g0b将断点设置在指令LEASI;之前

根据其中指示的ds寄存器内容查看数据段情况:

用e命令修改数据段字符串:

再次运行结果:

用q命令退出debug:

四、程序代码:

;PROGRAMTITLEGOESHERE--Comparestring

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

datareasegment;definedatasegment

string1db'Movethecursorbackward.'

string2db'Movethecursorbackward.'

;

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

mess2db'Nomatch!

',13,10,'$'

datareaends

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

prognamsegment;definecodesegment

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

mainprocfar

assumecs:

prognam,ds:

datarea,es:

datarea

start:

;startingexecutionaddress

;setupstackforreturn

pushds;saveolddatasegment

subax,ax;putzeroinAX

pushax;saveitonstack

;setDSregistertocurrentdatasegment

movax,datarea;datareasegmentaddr

movds,ax;intoDSregister

moves,ax;intoESregister

;MAINPARTOFPROGARMGOESHERE

leasi,string1

leadi,string2

cld

movcx,25

repzcmpsb

jzmatch

leadx,mess2

jmpshortdisp

match:

leadx,mess1

disp:

movah,09

int21h

ret;returntoDOS

mainendp;endofmainpartofprogram

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

prognamends;endodcodesegment

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

endstart;endassembly

实验二用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:

1、从DOS进入DEBUG界面。

2、使用R命令修改寄存器堆栈指针地址。

3、使用A命令,并开始输入代码。

4、使用T命令分步查看结果。

编程后用t单步执行:

显示交换后结果:

实验2:

1、从DOS进入DEBUG界面。

2、使用R命令修改寄存器堆栈指针地址。

3、使用D命令查看0300H处的存放情况。

4、使用E命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。

5、使用A命令,并开始输入代码。

6、使用T命令分步查看结果。

当数据传送完毕时,AX=0E0D

单步执行查看结果:

四、程序代码:

MOVAX,BX

MOVAX,0304H

MOVAX,[0304H]

MOVAX,[BX]

MOVAX,0001[BX]

MOVAX,[BX][SI]

MOVAX,0001[BX][SI]

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

一、实验目的:

1、了解存储器的读写方法。

2、了解存储器的块操作方法。

二、实验内容:

1、完成程序用来存储块清零,首先设置块起始地址,然后设置块长度,再将当前地址内容清零,地址加一,然后判断是否清完,若清完则结束,否则返回到上一步。

2、完成程序用来移动内存块,首先设置块的源地址,再设置块的目标地址,然后设置移动长度,安长度重复传送数据直到结束。

三、实验步骤:

实验1:

1、对程序进行分析,画出流程图。

2、进行MASM汇编和LINK连接生成执行文件。

3、利用DEBUG调试执行文件。

实验2:

1、对程序进行分析,画出流程图。

2、进行MASM汇编和LINK连接生成执行文件。

3、利用DEBUG调试执行文件。

单步执行:

执行到repmovsb之前查看ds段和es段内容:

移动后查看ds段和es段内容:

四、程序代码:

实验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,ES:

DATA

STARTPROCNEAR

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVSI,OFFSETSOURCE

MOVDI,OFFSETTARGET

MOVCX,256

REPMOVSB

JMP$

CODEENDS

ENDSTART

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

一、实验目的:

1、掌握接受键盘数据的方法,并了解将键盘数据显示时,须转为ASCII码的原理。

2、掌握DOS功能调用的编程方法。

二、实验内容:

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

利用DOS功能调用INT21H的1号功能从键盘输入字符和2号功能在显示器上显示一个字符。

三、实验步骤:

1、设计程序流程图。

2、进行MASM汇编和LINK连接生成执行文件。

3、执行文件。

四、程序代码:

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAL,01H

INT21H

MOVBL,AL

MOVDL,'-'

MOVAH,02H

INT21H

MOVAL,BL

CMPAL,'a'

JBEXIT

CMPAL,'z'

JAEXIT

SUBAL,20H

MOVDL,AL

MOVAH,02H

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

MOVDL,0DH

MOVAH,02H

INT21H

JMPSTART

EXIT:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验五循环程序实验

一、实验目的:

1、掌握循环程序的设计方法。

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

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

二、实验内容:

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

2、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序;若为其他字符则不显示。

三、实验步骤:

实验1:

1、设计程序流程图。

2、进行MASM汇编和LINK连接生成执行文件。

3、执行文件。

实验2:

1、设计程序流程图。

2、进行MASM汇编和LINK连接生成执行文件。

3、执行文件。

四、程序代码:

实验1:

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:

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

JACHRDN

DISPC:

MOVDL,'c'

MOVAH,2

INT21H

NEXT:

JMPSTART

CHRDN:

CMPAL,61H

JBNEXT

CMPAL,7AH

JANEXT

JMPDISPC

DONE:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验六分支程序实验

一、实验目的:

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

2、利用DEBUG程序修改参数、检查结果。

3、掌握汇编语言源程序的编辑、汇编、链接及调试过程。

二、实验内容:

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

2、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序;若为其他字符则不显示。

三、实验步骤:

实验1:

1、设计程序流程图。

2、进行MASM汇编和LINK连接生成执行文件。

3、执行文件。

实验2:

1、设计程序流程图。

2、进行MASM汇编和LINK连接生成执行文件。

3、执行文件。

四、程序代码:

实验1:

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:

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

JACHRDN

DISPC:

MOVDL,'c'

MOVAH,2

INT21H

NEXT:

JMPSTART

CHRDN:

CMPAL,61H

JBNEXT

CMPAL,7AH

JANEXT

JMPDISPC

DONE:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验七统计不同成绩段学生的人数

一、实验目的:

1、掌握分支、循环、子程序调用、DOS功能调用等基本的程序结构。

2、掌握综合程序的编制及调试方法。

二、实验内容:

设有十个学生成绩分别是76,69,84,90,73,88,99,63,100和80分。

试编制一个子程序,统计低于60分,60~69分,70~79分,80~89分,90~99分和100分的人数,并输出显示统计结果。

三、实验步骤:

1、设计程序流程图。

2、进行MASM汇编和LINK连接生成执行文件。

3、执行文件。

四、程序代码:

SSEGSEGMENTPARASTACK'stack'

DW100HDUP(0)

SSEGENDS

DSEGSEGMENT

BUFDW76,69,84,90,73,88,99,63,100,80

COUNTEQU$-BUF

STR1DB'0-59:

','$'

STR2DB'60-69:

','$'

STR3DB'70-79:

','$'

STR4DB'80-89:

','$'

STR5DB'90-99:

','$'

STR6DB'100:

','$'

RESDW20DUP(?

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

MAINPROCFAR

MOVAX,DSEG

MOVDS,AX

START:

MOVCX,COUNT/2+1

MOVDI,OFFSETRES

MOVSI,OFFSETBUF-2

BEGIN:

INCSI

INCSI

DECCX

JZOUTPUT

MOVAX,[SI]

CMPAX,60

JBLOP1

CMPAX,70

JBLOP2

CMPAX,80

JBLOP3

CMPAX,90

JBLOP4

CMPAX,100

JBLOP5

JZLOP6

LOP1:

MOVBX,[DI]

INCBX

MOV[DI],BX

JMP

LOP2:

MOVBX,[DI+2]

INCBX

MOV[DI+2],BX

JMPBEGIN

LOP3:

MOVBX,[DI+4]

INCBX

MOV[DI+4],BX

JMPBEGIN

LOP4:

MOVBX,[DI+6]

INCBX

MOV[DI+6],BX

JMPBEGIN

LOP5:

MOVBX,[DI+8]

INCBX

MOV[DI+8],BX

JMPBEGIN

LOP6:

MOVBX,[DI+10]

INCBX

MOV[DI+10],BX

JMPBEGIN

OUTPUT:

LEADX,STR1

MOVAH,9

INT21H

CALLDATCH

LEADX,STR2

MOVAH,9

INT21H

ADDDI,2

CALLDATCH

LEADX,STR3

MOVAH,9

INT21H

ADDDI,2

CALLDATCH

LEADX,STR4

MOVAH,9

INT21H

ADDDI,2

CALLDATCH

LEADX,STR5

MOVAH,9

INT21H

ADDDI,2

CALLDATCH

LEADX,STR6

MOVAH,9

INT21H

ADDDI,2

CALLDATCH

MOVAH,1

INT21H

MOVAH,4CH

INT21H

DATCHPROC

PUSHDX

PUSHCX

PUSHBX

PUSHAX

XORDX,DX

MOVAX,[DI]

MOVCX,10

DIVCX

MOVBX,DX

MOVDL,AL

ADDDL,30H

MOVAH,2

INT21H

MOVDL,BL

ADDDL,30H

MOVAH,2

INT21H

MOVDL,0AH

MOVAH,2

INT21H

MOVDL,0DH

MOVAH,2

INT21H

POPAX

POPBX

POPCX

POPDX

RET

DATCHENDP

MAINENDP

CSEGENDS

ENDMAIN

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

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

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

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