汇编语言实验指导书.docx

上传人:b****5 文档编号:8523962 上传时间:2023-01-31 格式:DOCX 页数:14 大小:38.01KB
下载 相关 举报
汇编语言实验指导书.docx_第1页
第1页 / 共14页
汇编语言实验指导书.docx_第2页
第2页 / 共14页
汇编语言实验指导书.docx_第3页
第3页 / 共14页
汇编语言实验指导书.docx_第4页
第4页 / 共14页
汇编语言实验指导书.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

汇编语言实验指导书.docx

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

汇编语言实验指导书.docx

汇编语言实验指导书

汇编语言实验指导书

 

 

电子科技大学计算机学院

二○○六年八月

实验一汇编源程序的上机调试操作基础训练……………………………..2

实验二数制、码制和子程序的编程与调试……………………………….6

实验三分支程序与循环程序设计……………………………………….10

实验四串操作指令及其应用程序的设计与调试运行……………………12

附录实验报告……………………………………………………………15

实验一汇编源程序的上机调试操作基础训练

一.实验目的:

1.掌握DEBUG的基本命令及其功能

2.学习数据传送和算术运算指令的用法

3.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。

二.实验内容:

(一)DEBUG命令的使用

DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。

1、DEBUG程序的启动

在DOS提示符下,可键入命令:

C>DEBUG[d:

][path][文件名][参数1][参数2]

其中文件名是被调试文件的名称,它须是执行文件(EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。

在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。

用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。

如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。

2、DEBUG的主要命令

(1)汇编命令A,格式为:

-A[地址]

该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。

(2)反汇编命令U,有两种格式:

1)-U[地址]

该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。

2)-U范围

该命令对指定范围的内存单元进行反汇编,例如:

-U04BA:

01000108或–U04BA:

0100L9

此二命令是等效的。

(3)运行命令G,格式为:

-G[=地址1][地址2[地址3。

]]

其中地址1规定了运行起始地址,后面的若干地址均为断点地址。

(4)追踪命令T,有两种格式:

1)逐条指令追踪:

-T[=地址]

该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。

2)多条指令追踪:

-T[=地址][值]

该命令从指定地址起执行n条命令后停下来,n由[值]确定。

(5)显示内存单元内容的命令D,格式为:

-D[地址]或-D[范围]

(6)修改内存单元内容的命令E,它有两种格式:

1)用给定的内容代替指定范围的单元内容:

-E地址内容表

例如:

-E2000:

0100F3“XYZ”8D

其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:

0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。

2)逐个单元相继地修改:

-E地址

例如:

-E100:

18E4:

010089.78

此命令是将原100号单元的内容89改为78。

78是程序员键入的。

(7)检查和修改寄存器内容的命令R,它有三种方式:

1)显示CPU内部所有寄存器内容和标志位状态;格式为:

-R

R命令显示中标志位状态的含义如下表所示:

标志名

置位

复位

溢出Overflow(是/否)

OV

NV

方向Direction(减量/增量)

DN

UP

中断Interrupt(允许/屏蔽)

EI

DI

符号Sign(负/正)

NG

PL

零Zero(是/否)

ZR

NZ

辅助进位AuxiliaryCarry(是/否)

AC

NA

奇偶Parity(偶/奇)

PE

PO

进位Carry(是/否)

CY

NC

2)显示和修改某个指定寄存器内容,格式为:

-R寄存器名

例如打入:

-RAX

系统将响应如下:

AXFIF4

表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:

-RBX

BX0369

059F

则BX内容由0369改为059F

3)显示和修改标志位状态,命令格式为:

-RF

系统将给出响应,如

OVDNEINGZRACPECY-

这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。

OVDNEINGZRACPECY-PONZDINV

(8)命名命令N,格式为:

-N文件名

此命令将文件名格式化在CS:

5CH的文件控制块内,以便使用L或W命令把文件装入内存进行调试或者存盘。

(9)装入命令L,它有两种功能:

1)把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为:

-L地址驱动器扇区号扇区数

2)装入指定文件,格式为:

-L[地址]

此命令装入已在CS:

5CH中格式化的文件控制块所指定的文件。

在用L命令前,BX和CX中应包含所读文件的字节数。

(10)写命令W,有两种格式:

1)把数据写入磁盘的指定扇区:

-W地址驱动器扇区号扇区数

2)把数据写入指定文件中:

-W[地址]

此命令把指定内存区域中的数据写入由CS:

5CH处的FCB所规定的文件中。

在用W命令前,BX和CX中应包含要写入文件的字节数。

(11)退出DEBUG命令Q,该命令格式为

Q

它退出DEBUG程序,返回DOS,但该命令本身并不把在内存中的文件存盘,如需存盘,应在执行Q命令前先执行写命令W。

(二)程序的调试与运行

编写程序计算以下表达式:

Z=(5X+2Y-7)/2

设X、Y的值放在字节变量VARX、VARY中,结果存放在字节单元VARZ中。

三.实验要求:

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

四.调试步骤

1.编辑源程序,建立一个以后缀为.ASM的文件.

2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。

无错时继续第3步。

3.连接目标程序,产生可执行程序。

4.用DEBUG程序调试可执行程序,记录数据段的内容。

VARX

VARY

VARZ

5

4

10

5

20

20

实验二数制、码制和子程序的编程与调试

一.实验目的:

1、熟练掌握编写汇编语言原程序的基本方法和基本框架。

2、熟练使用DEBUG调试程序。

3、掌握十六进制数与ASCII码之间,ASCII码与BCD码之间的转换。

4、掌握用DOS功能调用,实现字符的输入和显示。

5、掌握子程序的编程与调试方法。

二.实验内容:

编程实现:

从键盘输入4位十六进制数(它对应的二进制数是补码表示的带符号数),把它们转换为带符号非组合型BCD码,并在屏幕上显示出来。

三.编程提示:

1、从键盘输入1~4位十六进制数,存放在以HEXBUF+2为首址的4个字节单元中。

其中HEXBUF+1单元中为输入的数据个数。

2、将ASCII码表示的4位十六进制数转换为16位二进制数,并暂时存放在BX中;

3、确定十进制数的符号,并把符号(+或-)存放在BCDBUF单元中;

4、对BX中的二进制数采用前述算法转换为十进制数(非组合型BCD码),转换结果存放在以BCDBUF+1为首址的5个字节单元中;

5、把转换结果的5个非组合型BCD码形成相应的ASCII码

6、显示结果。

参考程序:

TITLECONVERTHEXADECIMALTOBCD

DATASEGMENT

PROMPTDB"INPUTHEXADECIMAL(4DIGITS):

$'

HEXBUFDB5,0,5DUP(0)

DISPDB0AH,0DH

BCDBUFDB6DUP(0),'$'

DATAENDS

STACK1SEGMENTPARASTACK

DW20HDUP(0)

STACK1ENDS

COSEGSEGMENT

ASSUMECS:

COSEG,DS:

DATA,SS:

STACK1

HEXBCD:

MOVAX,DATA

MOVDS,AX

;输入1~4位十六进制数

LEADX,PROMPT;显示提示信息

MOVAH,09H

INT21H

LEADX,HEXBUF;输入数据

MOVAH,0AH

INT21H

;ASCII码转换为16位二进制数并存入BX中

LEASI,HEXBUF+2;取十六进制数ASCII码首址

MOVBX,0;暂存二进制数的寄存器清零

MOVCH,HEXBUF+1;取输入数据个数

HEX1:

MOVAL,[SI];取一个十六进制数字符

CMPAL,'9'

JBENUMB;小于等于‘9’是数字符

SUBAL,07H;是字母符

NUMB:

ANDAL,0FH

MOVCL,4

SALBX,CL

ORBL,AL

INCSI

DECCH

JNEHEX1

;确定十进制数的符号

MOVBCDBUF,'+'

TESTBX,8000H

JNSPLUS;是正数

MOVBCDBUF,'-';是负数

NEGBX;求补后变为原码

;将二进制数转换为非组合型BCD码,从二进制;数高位起,进行15次加和乘

PLUS:

MOVCH,0FH;“加乘”运算的次数

LOP0:

SHLBX,1;最高位二进制数送CF

CALLADDIT;先加1位二进制数

CALLMULTI;再乘2

DECCH

JNELOP0

SHLBX,1;加最低位二进制数

CALLADDIT

;把非组合型BCD码转换为ASCII码形式

LEADI,BCDBUF+1

MOVCX,5

LOP1:

ORBYTEPTR[DI],30H

INCDI

LOOPLOP1

;显示结果

LEADX,DISP

MOVAH,09H

INT21H

MOVAH,4CH;程序结束

INT21H

;多字节BCD码加1位二进制数子程序

ADDITPROC

LEADI,BCDBUF+5;从低位开始

MOVCL,5;取字节数

ADD1:

MOVAL,[DI];取BCD码

ADCAL,0;加二进制数位(CF)

AAA;十进制数运算校正

MOV[DI],AL;存BCD码

DECDI

DECCL

JNEADD1

RET

ADDITENDP

;多字节BCD码乘2子程序

MULTIPROC

LEADI,BCDBUF+5;从低位开始

MOVCL,5

CLC

MUL1:

MOVAL,[DI];取BCD码

ADCAL,AL;乘2

AAA;十进制数运算校正

MOV[DI],AL;存BCD码

DECDI

DECCL

JNEMUL1

RET

MULTIENDP

COSEGENDS

ENDHEXBCD

四.实验要求:

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

五.实验报告:

1、程序说明。

说明程序的功能、结构。

2、调试说明。

包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

3、写出源程序清单和执行结果。

实验三分支程序与循环程序设计

一.实验目的

1、掌握分支程序的结构。

2、掌握分支程序的设计与调试方法。

3、掌握循环程序设计与调试方法

4、掌握正确分配与使用寄存器。

二.实验内容

编程实现:

分别统计下列20个数中大于5、小于零和大于零且小于等于5的数据个数,分别存入字节单元RES1、RES2和RES3中。

BUFFDB-1,20,3,30,-5,15,100,-54,0,4,78,99,-12,32,3,23,-7,24,60,-51

三.实验要求:

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

四.程序框图

五.实验报告:

1、程序说明。

说明程序的功能、结构。

2、调试说明。

包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

3、画出程序框图。

5、写出源程序清单和执行结果。

实验四串操作指令及其应用程序的设计与调试运行

一.实验目的

1.熟悉串操作指令的基本格式和使用方法。

2.掌握常用的串操作程序的设计方法。

3.熟悉串操作程序的调试运行过程。

二.实验内容

编制一程序,从键盘输入两个长度不同的字符串,设字符串长度小于25个字符。

要求在屏幕上以右边对齐的形式显示出来。

编程要点:

  1.在数据段中设置两个存放提示信息的字符串,一个是提示用户输入,另一个是指示显示信息位置;

  2.在数据段中设置两个存放输入字符串的缓冲区;

  3.输入字符串采用0AH号DOS功能调用,字符串存入缓冲区时,第2个字节为实际输入字符串的长度,从第3个字节开始为字符串的ASCII码。

  4.为了实现显示的右对齐,由于两个字符串缓冲区的长度相同,只需要将两个字符串向缓冲区后面靠齐,再调用09H号DOS功能调用即可达到显示的右对齐。

三.实验要求:

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

四.参考程序:

Title字符串右对齐显示

DATASEGMENT

NUMEQU25

PROMPT1DB0AH,0DH,‘STRING:

’,‘$’

PROMPT2DB0AH,0DH,‘RIGHT-ADJUSTINGOFSTRING:

’,OAH,0DH,‘$’

STRING1DBNUM,0,NUMDUP(‘‘),0AH,0DH,‘$’

STRING2DBNUM,0,NUMDUP(‘‘),0AH,0DH,‘$’

DATAENDS

STACK1SEGMENTPARASTACK

DW20HDUP(0)

STACK1ENDS

COSEGSEGMENT

ASSUMECS:

COSEG,DS:

DATA,SS:

STACK1,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVCX,2

LEABX,STRING1

LOP:

LEADX,PROMPT1;显示输入字符串提示信息

MOVAH,09H

INT21H

MOVDX,BX;输入两个字符串

MOVAH,0AH

INT21H

LEABX,SRING2

LOOPLOP

;字符串右对齐处理

     LEABX,STRING1+2

CALLMOVE

LEABX,STRING2+2

CALLMOVE

;输出右对齐字符串

      LEADX,PROMPT2

MOVAH,09H

INT21H

LEADX,STRING1+2

MOVAH,09H

INT21H

LEADX,STRING2+2

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

;字符串右对齐处理子程序

MOVEPROC

XORCH,CH

MOVCL,-1[BX];字符串传送字节数

MOVSI,CX

     ADDSI,BX;传送源串末址

DECSI

MOVDI,BX     

ADDDI,NUM-1;传送目的末址

STD

REPMOVSB;字符串传送

MOVCX,NUM

SUBCL,-1[BX];剩余字节数

MOVAL,‘‘

REPSTOSB;剩余字节填空格

      RET

MOVEENDP

COSEGENDS

ENDSTART

五.实验报告:

1.程序说明。

说明程序的功能、结构。

2.调试说明。

包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

3.画出程序框图。

4.写出源程序清单和执行结果。

电子科技大学

实验报告

学生姓名:

学号:

一、实验室名称:

二、实验项目名称:

三、实验原理:

四、实验目的:

五、实验内容:

六、实验器材(设备、元器件):

七、实验步骤及操作:

八、实验数据及结果分析:

九、实验结论:

十、总结及心得体会:

十一、对本实验过程及方法、手段的改进建议:

报告评分:

指导教师签字:

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

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

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

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