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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

合肥工业大学计算机与信息学院

实验报告

课程:汇编语言程序设计专业班级:**************** 学号:**********

姓名:*****

目录

实验一 (3)

实验二 (7)

实验三 (12)

实验四 (22)

实验一Debug程序的使用

一.实验目的

1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

二.实验内容

1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。

2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。要求:

本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

三.实验过程和程序

实验内容一:

e ds:0200 E7 1A 3F 00

e ds:0204 C4 E5 6B 00

实验内容二:

(1)直接寻址方式

MOV AX,[0200]

MOV BX,[0202]

ADD AX,[0204]

ADC BX,[0206]

MOV [0208],AX

MOV [020A],BX

(2)寄存器间接寻址方式

MOV SI,0200H

MOV DI,0204H

MOV BX,0208H

MOV AX,[SI]

MOV DX,[SI+2]

ADD AX,[DI]

ADC DX,[DI+2]

MOV [BX],AX

MOV [BX+2],DX

四.实验结果(包括必要的截图)

实验内容一:

输入数据:

显示数据:

实验内容二:

(1)直接寻址方式

程序段编辑:

反汇编:

运行:结果在DS:0208 单元中为00AB00ABH

(2)寄存器间接寻址方式

程序段编辑:

反汇编:

运行:结果高字存放在dx中,低字存放在ax中(结果为00AB00ABh)

五.实验体会

通过本实验,实践debug程序中的命令,并在debug下调试运行汇编语言源程序。在实践过程中,解决如何把数据录入存储单元、debug命令如何使用等问题后,知道存数据例如1234进存储单元时要34 12存,还有掌握了寄存器的寻址方式。

实验二汇编语言程序设计(顺序、循环)

一.实验目的

1、掌握顺序和循环程序结构和设计方法;

2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。

二.实验内容

1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能:

①计算表达式值(V–(X*Y+Z-720))/X;

②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。

2、求一个班50名学生成绩的平均值(附加题:最大值和最小值,并将结果显示出来)

3、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:查找中间是否有‘asm’子串。如果有,输出‘Yes’;否则,输出‘No’)。

三.实验过程和程序

(注:附加题没有做)

实验内容一:

X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。

试编写汇编语言程序完成以下功能:①计算表达式值(V–(X*Y+Z-720))/X;②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。

Data segment

x dw ?

y dw ?

z dw ?

v dw ?

sum1 dw ?

sum2 dw ?

Data ends

Code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov ax,x

imul y

mov cx,ax

mov bx,dx

mov ax,z

cwd

add cx,ax

adc bx,dx

sub cx,720

sbb bx,0

mov ax,v

cwd

sub ax,cx

sbb dx,bx

idiv x

mov sum1,ax

mov sum2,dx

mov ah,4ch

int 21h

Code ends

end start

实验内容二:求一个班50名学生成绩的平均值(为了方便,只设置了5个学生数据)

data segment

grade dw 90,80,80,70,60;平均数76

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

xor ax,ax

mov cx,5

mov bx,offset grade

again: add ax,[bx]

add bx,2

loop again

mov cx,5

相关文档
最新文档