PC汇编语言实验报告.docx

上传人:b****1 文档编号:1272759 上传时间:2023-04-30 格式:DOCX 页数:55 大小:1.91MB
下载 相关 举报
PC汇编语言实验报告.docx_第1页
第1页 / 共55页
PC汇编语言实验报告.docx_第2页
第2页 / 共55页
PC汇编语言实验报告.docx_第3页
第3页 / 共55页
PC汇编语言实验报告.docx_第4页
第4页 / 共55页
PC汇编语言实验报告.docx_第5页
第5页 / 共55页
PC汇编语言实验报告.docx_第6页
第6页 / 共55页
PC汇编语言实验报告.docx_第7页
第7页 / 共55页
PC汇编语言实验报告.docx_第8页
第8页 / 共55页
PC汇编语言实验报告.docx_第9页
第9页 / 共55页
PC汇编语言实验报告.docx_第10页
第10页 / 共55页
PC汇编语言实验报告.docx_第11页
第11页 / 共55页
PC汇编语言实验报告.docx_第12页
第12页 / 共55页
PC汇编语言实验报告.docx_第13页
第13页 / 共55页
PC汇编语言实验报告.docx_第14页
第14页 / 共55页
PC汇编语言实验报告.docx_第15页
第15页 / 共55页
PC汇编语言实验报告.docx_第16页
第16页 / 共55页
PC汇编语言实验报告.docx_第17页
第17页 / 共55页
PC汇编语言实验报告.docx_第18页
第18页 / 共55页
PC汇编语言实验报告.docx_第19页
第19页 / 共55页
PC汇编语言实验报告.docx_第20页
第20页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

PC汇编语言实验报告.docx

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

PC汇编语言实验报告.docx

PC汇编语言实验报告

 

实验报告

 

实验课程:

IBM-PC汇编语言程序设计

学生姓名:

学号:

专业班级:

 

2011年12月15日

汇编语言实验指导

前言

 

汇编语言是计算机专业的一门重要的专业基础课,主要介绍汇编语言程序设计的基本原理和方法。

汇编语言是一门理论性和实践性较强的课程,辅助课堂教学的实验有助于帮助学生理解汇编语言的基本原理,锻炼学生的动手能力,提高学生的综合应用知识的能力。

本实验指导按照汇编语言程序设计的教学大纲要求编写。

依据循序渐进、由浅入深的规律,通过实例复习巩固所学知识,借助实例开展汇编语言程序设计。

通过这种既具有构造性又具有创造性的学习活动,更便于初学者的理解和掌握,通过上机实验,并在实验后完成实验报告,又能进一步加深和拓宽所学知识。

为了帮助老师和学生开展实验,我们特编了这本实验指导,希望能对我校的《汇编语言》教学工作有所帮助。

本实验指导所有实例均在PC机上调试通过。

 

(1)利用DEBUG调试汇编语言程序段

(2)初级程序的编写与调试实验

(一)

(3)初级程序的编写与调试实验

(二)

(4)汇编语言程序上机过程

(5)分支程序实验

(6)循环程序实验

(7)子程序实验

 

实验1利用DEBUG调试汇编语言程序段

一.实验目的

1.熟悉DEBUG有关命令的使用方法;

2.利用DEBUG掌握有关指令的功能;

3.利用DEBUG运行简单的程序段。

二.实验内容

1.进入和退出DEBUG程序;

1)开始—运行,输入cmd,点确定进入命令窗口

2)在命令窗口中输入dubug进入debug程序

3)进入debug窗口后,输入q命令退出debug

2.学会DEBUG中的

1)D命令(显示内存数据D段地址:

偏移地址)

例1:

-D100;显示DS段,0100开始的128个字节内容

说明:

指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。

 

1DSEGREG[起始地址][L长度]

;显示SEGREG段中(缺省内默认为DS),以[起始地址](缺省内为当前的偏移地址),开始的[L长度](缺省内默认为128)个字节的内容.

2DSEGREG[段地址:

偏移地址]

;显示SEGREG段中(缺省内默认为DS),[段地址:

偏移地址]开始的[L长度](缺省内默认为128)个字节内容

    -D  ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H)

-DDS:

100;显示DS段,0100H开始的128个字节内容

-DCS:

200;显示CS段,0200H开始的128个字节内容

    -D200:

100;显示DS段,0200:

0100H开始的128个字节内容

    -D200;显示DS段,0200H开始的128个字节内容

    -D100L10;显示DS段,100H开始的100H个字节内容

2)E命令(修改指定内存)

例1:

-E1004142434448474645

-D100,L08

 结果:

08F1:

01004142434448474645

例2:

-E100:

  08F1:

01007642:

42是操作员键入

  此命令是将原100号内存内容76修改为42,用D命令可察看。

①E地址  ;从指定地址开始,修改(或连续修改)存储单元内容。

DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。

       ②E地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。

    -EDS:

100F3‘AB’8D;把DS段中0100H开始的四个字节修改为F3‘AB’(A和B的ASCII码)8D

也可以按下面的方式实现

3)R命令(显示当前寄存器的内容)

显示修改寄存器命令R

       R;★显示所有寄存器和标志位状态;

             ★显示当前CS:

IP指向的指令。

       显示标志时使用的符号:

       标志                   标志=1         标志=0

       OF                      OV                NV

       DF                      DN                UP

       IF                       EI                  DI

       SF                      NG                PL

       ZF                      ZR                NZ

       AF                      AC                NA

       PF                      PE                 PO

       CF                      CY                NC

4)T命令(设置陷井,单步执行)

 ①T;从当前IP开始执行一条指令。

       ②T数值;从当前IP开始执行多条指令,数值:

执行的指令条数。

       ②T=地址;从给定的地址执行一条指令

       ③T=地址  数值;从给定的地址执行多条指令,数值:

执行的指令条数.

    -T;从当前IP开始执行一条指令

    -T5;从当前IP开始执行5条指令

-T=100   5;从当前0100H开始执行5条指令

5)A命令(将指令直接汇编成机器码输入到内存中。

汇编命令A

       A[地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:

IP开始(通常是CS:

100)。

       注释:

①在DEBUG下编写简单程序即使用A命令。

       ②每条指令后要按回车。

       ③不输入指令按回车,或按Ctrl+C结束汇编。

       ④支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。

使用A命令在0100H开始输入指令movax,10inccxmovbl,al

单步执行上述指令

6)G命令等的使用(执行A命中输入的汇编指令)

运行程序命令G

       ①G;从CS:

IP指向的指令开始执行程序,直到程序结束或遇到INT3。

       ②G=地址;从指定地址开始执行程序,直到程序结束或遇到INT3。

       ③G断点1[,断点2,…断点10];从CS:

IP指向的指令开始执行程序,直到遇到断点。

       ④G=地址  断点1[,断点2,…断点10]

    -G;从CS:

IP指向的指令开始执行程序。

    -G=100;从指定地址开始执行程序。

-G=100105110120

使用A命令在0100H开始输入指令movax,10inccxmovbl,alint3

然后使用g命令执行

上面的例子设断点在100H处然后用T命令单步执行

3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。

三.实验要求

仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;

四.实验环境

PC微机

DOS操作系统或Windows操作系统

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

五.实验步骤

用DEBUG验证乘法、除法、加法、减法带进位加、带借位减、堆栈操作指令、串操作指令的功能:

1.验证加法和带进位加,使用A命令,在DEBUG中键入以下代码:

movax,f111

movbx,f222

movcx,2

movdx,3

addax,bx

adccx,dx

使用G命令查看结果

2.验证减法和带借位减法,使用A命令,在DEBUG中键入以下代码:

movax,2

movbx,3

movcx,5

movdx,2

subax,bx

sbbcx,dx

使用G命令查看结果

3.验证乘法和除法,使用A命令,在DEBUG中键入以下代码:

乘法:

moval,b4

movbl,11

mulbl

使用G命令查看结果

除法:

movax,400

movbl,b4

divbl

使用G命令查看结果

4.验证堆栈操作指令,使用A命令,在DEBUG中键入以下代码:

movax,1111

pushax

movax,2222

使用G命令查看结果后在使用A命令,在DEBUG中键入以下代码:

popax

使用G命令查看结果

5.验证串操作指令,使用A命令,在DEBUG中键入以下代码:

org1000

db‘hello’

movsi,1000

movdi,1500

movcx,5

cld

repmovsb

使用G命令查看结果

六.实验报告要求

1.如何启动和退出DEBUG程序;

2.整理每个DEBUG命令使用的方法,实际示例及执行结果。

七.思考题

启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?

答:

进入DOS,输入DEBUGxxx.exe,其中xxx为文件名。

 

实验2初级程序的编写与调试实验

(一)

一.实验目的

1.进一步熟悉DEBUG命令;

2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算;

3.熟悉数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP;

4.掌握简单的汇编语言程序编写与调试。

二.实验内容

1.内存操作数及各种寻址方式使用;

2.求累加和程序;

3.多字节加法程序;

4.数据串搬家程序;

5.段寄存器概念及字符串传送指令练习。

三.实验要求

1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;

2.阅读数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP的内容;

3.用DEBUG的有关命令调试本实验中的求累加和程序、多字节加法程序、数据串搬家程序段。

四.实验环境

PC微机;

DOS操作系统或Windows操作系统;

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

五.实验步骤

1.内存操作数及各种寻址方式使用

MOVAX,1234

MOV[1000],AX

MOVBX,1002

MOVBYTEPTR[BX],20

MOVDL,39

INCBX

MOV[BX],DL

DECDL

MOVSI,3

MOV[BX+SI],DL

MOV[BX+SI+1],DL

MOVWORDPTR[BX+SI+2],2846

步骤:

(1)用A命令键入上述程序,并用T命令逐条运行。

(2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

注意D命令显示结果中右边的ASCII字符及双字节数存放法。

2.求累加和程序:

程序:

MOVBX,1000

MOVCX,10

SUBAX,AX

LOP:

ADDAL,[BX]

ADCAH,0

INCBX

J:

LOOPLOP

INT3

步骤:

(1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替;

(2)用命令NAA将此程序命名为文件AA(文件名可任取);

(3)用R命令将BX:

CX改为程序长度值(即最后一条指令后面的地址减去开始地址;

(4)用命令W100将此程序存到AA命名的磁盘文件中;

(5)用命令Q退出DEBUG;

(6)用命令DEBUGAA再次调入DEBUG和文件AA,可用U命令检查调入程序;

若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入;

(7)用E命令在内存地址1000H处键入16个数字;

(8)用命令G=100J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值;

(9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错;

(10)重复G、J与T,再检查AX是否正确;

(11)用G命令使程序运行到结束,检查AX值是否正确。

3.多字节加法程序

程序:

MOVDI,1000

MOVCX,8

MOVSI,2000

CLC

LOP:

MOVAL,[SI]

ADC[DI],AL

INCSI

INCDI

LOOPLOP

INT20

步骤:

(1)用命令键入此程序

(2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。

分步计算并得到结果,如下图所示:

4.数据串搬家程序

(1)用A命令键入下列程序:

MOVSI,1000

MOVDI,2000

MOVCX,0F

LOP:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

LOOPLOP

INT20

(2)用A命令DB伪指令在1000H键入下列字符串:

‘IBM_PCCOMPUTER'

(3)用G命令运行此程序,并用D命令检查目的地址处的字符与源串a是否一致。

5.段寄存器概念及字符串传送指令练习

(1)用A命令键入下列程序:

MOVSI,0

MOVDI,0

MOVAX,1000

MOVDS,AX

MOVAX,1500

MOVES,AX

MOVCX,0F

CLD

REPMOVSB

INT20

(2)用A命令DB伪指令在1000:

0000处键入字符串'IBM_PCCOMPUTER',并用D命检查之

(3)用D命令检查0F00:

1000处内容,看是否一样。

为什么?

(4)用G命令运行此程序,检查目的地址1500:

0000处内容。

并记下DS与ES值。

(5)修改此程序,使ES与DS为同一值,以减少一条指令,而源物理地址和目的物理地址(是多少?

)仍和原来一样。

6.自编程序

用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放地址同多字节加法程序,调试并做记录。

六.实验报告要求

1.各项实验记录;

2.要求你修改的程序的清单(修改后)和调试记录;

3.自编程序原稿及调试后修正稿,写出原稿错在那里。

七.思考题

1.MOVBYTEPTR[BX],20

MOVWORDPTR[BX+SI+2],2846

上述指令中BYTEPTR及WORDPTR伪操作不加行不行?

试一试。

2.用G命令运行多字节加法程序,并用D命令检查其结果(存放在哪里?

),是否正确?

3.将多字节加法程序中的INT20H指令改为INT3,有何区别?

若这条指令不加,行不行?

试一试。

4.数据串搬家程序中的目的地址改为1002H,再运行此程序,看能不能把1000H开始的字符串搬到1002H开始的地方去?

修改程序以做到这一点。

MOVSI,100E

MOVDI,1010

MOVCX,0F

LOP:

MOVAL,[SI]

MOV[DI],AL

DECSI

DECDI

LOOPLOP

INT20

或者

DB‘IBM_PCCOMPUTER’

MOVSI,100E

MOVDI,1010

MOVAX,137E

MOVES,AX

MOVCX,0F

STD

REPMOVS

INT20

实验3初级程序的编写与调试实验

(二)

一.实验目的

1.掌握无条件转移指令、条件转移指令;

2.掌握利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法;

3.掌握直接向视频RAM送ASCII码进行屏幕显示的方法;

4.掌握屏幕字符显示程序编写与调试。

二.实验内容

1.字符、字符串的屏幕显示;

2.直接向VRAM送ASCII码显示字符;

3.用字符搜索法确定字符串长度;

4.16进制数化ASCII码的一般方法(显示内存内容)。

三.实验要求

1.仔细阅读有关无条件转移指令、条件转移指令的内容;

2.阅读利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的内容;

3.阅读实验指导书中的字符串屏幕显示程序、字符屏幕显示程序、直接向VRAM送ASCII码显示字符程序、用字符搜索法确定字符串长度程序、16进制数化ASCII码的一般方法的程序段,调试上述程序。

四.实验环境

PC微机;

DOS操作系统或Windows操作系统;

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

五.实验步骤

1.利用INT210AH号功能调用显示字符串。

(1)用A命令在100H处键入下列程序:

MOVAH,9

MOVDX,110

INT21

INT20

(2)用A命令在110H处键入下列字符串的ASCII码:

DB'Thisisasample!

$'

(3)用N命令和W命令将此程序(包括数据区)存入文件名为AA.CcOM的磁盘文件中。

(存入前BX:

CX必须置为文件长度值)。

(4)用Q命令退出DEBUG。

(5)在DOS命令下打AA,运行此程序,即在屏幕上显示'Thisisasample!

'字符串,若不出现,用DEBUG检查程序有无错误。

2.利用INT21H2号功能显示字符

(1)用A命令在100H处键入下列程序:

XORDL,DL

MOVCX,100

LOP:

MOVAH,2

INT21

INCDL

PUSHCX

MOVCX,8

DELY:

PUSHCX

MOVCX,0

J:

LOOPJ

POPCX

LOOPDELY

POPCX

LOOPLOP

INT20

(2)用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。

仔细观察每个字符,和IBM-PCASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?

(3)按CTRL+BREAK退出此程序,若一次不行可多做几次。

3.直接向VRAM送ASCII码显示字符

(1)用A命令在100H处键入下列程序

MOVAX,B000

MOVDS,AX

XORAL,AL

XORBX,BX

MOVCX,100

LOP:

MOV[BX],AL

INCBX

INCAL

PUSHCX

MOVCX,8

DELY:

PUSHCX

MOVCX,0

J:

LOOPJ

POPCX

LOOPDELY

POPCX

LOOPLOP

INT20

(2)用N命令和W命令将此程序存入BB.COM文件中。

(一定要先存入!

(3)用G命令运行此程序,仔细观察每一个ASCII码显示结果,并和字符表及上一道程序运行情况进行对照,其控制字符区(07-0DH)显示结果和INT21H2号功能调用有何不同?

控制字符在该程序中没有显示,在上一个程序中显示为笑脸

4.用字符搜索法确定字符串长度

(1)用A命令在100H开始的内存处键入下列程序

JMPSTART

DB'Thisistheprogramtomeasure'

DB'thelengthofastring!

$'

START:

MOVBX,102

MOVAL,24

XORCL,CL

LOP:

CMPAL,[BX]

JZEXIT

INCBX

INCCL

JMPLOP

EXIT:

INT3

(2)用G命令运行此程序,并检查CL的统计长度是否与你自己统计的实际长度是否一样?

CL的统计长度与实际长度相等,均为35H

5.用字符搜索法确定字符串长度

(1)用A命令在100H处键入下列程序:

MOVSI,0

MOVBL,10

LOP:

MOVDL,[SI]

MOVCL,4

SHRDL,CL

CMPDL,0A

JCJ1

ADDDL,7

J1:

ADDDL,30

MOVAH,2

INT21

MOVDL,[SI]

ANDDL,0F

CMPDL,0A

JCJ2

ADDDL,7

J2:

ADDDL,30

MOVAH,2

INT21

MOVDL,20

MOVAH,2

INT21

INCSI

DECBL

JNZLOP

INT20

(2)用N,W命令将此程序用CC.COM文件名存入磁盘。

(3)用Q命令退出DEBUG。

(4)在DOS命令状态下直接运行CC.COM命令文件,应在屏幕上显示出内存从0000H开始的16个字节的内容,若有错误,用DEBUG检查之。

(5)自编程序:

修改上面程序,使除以16进制数形式显示内存内容外,还能在其右边显示该16进制码所对应的ASCII字符,07-0D的控制字符用'.'代替。

答:

在DOS下输入DEBUGCC.COM打开程序,从最后一条指令INT20(包括该指令)开始修改,修改方法如下:

MOVCX,10

MOVSI,0

J3:

MOVDI,[SI]

MOVAH,2

CMPDL,0D

JBEJ5

J4:

INT21

INCSI

DECCX

JNZJ3

INT20

J5:

CMPDL,07

JNBJ4

MOVDL,2E

JMPJ4

六.实验报告要求

1、各项实验记录及观察体会。

2、自编程序草稿及调试结果。

七.思考题

利用INT21H显示和直接向VRAM送ASCII码显示方法在显示结果上有什么不同?

答:

利用INT21H显示时,07H-0DH的控制符会用笑脸之类的符号显示;直接向VRAM送ACSII码时,07H-0DH的控制符不显示。

 

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

一.实验目的

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

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

二.实验内容

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

2.伪指令:

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

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

三.实验要求

1.仔细阅读有关伪指令SEGME

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

当前位置:首页 > 人文社科 > 法律资料

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

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