汇编语言实验报告5份整合版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)流程图:
(3)编写程序:
DATA SEGMENT
X DB 40H
Y DB 20H
W DB 50H
Z DW ?
T DB 10
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
XOR AX,AX;AX置零
MOVAL,W
实验一汇编程序的汇编及运行
1.实验目的和要求
(1)熟悉汇编程序的汇编、连接、执行过程
(2)生成LST文件,查看LST文件
(3)生成OBJ文件,修改语法错误
(4)生成EXE文件
(5)执行
2.实验环境
IBM—PC机及其兼容机
实验的软件环境是:
操作系统:DOS 2.0以上;调试程序:DEBUG.COM;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。
VAR5DW 10H DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DE:DATA
BEINGMOV AX,DATA
MOV DS,AX
LEASI,VAR5
MOV BX,OFFSET VAR2
MOV [SI],0ABH
MOV AX,VAR1+2
MOV [BX],[SI]
MOV VAR5+4,VAR4
ASSUMECS:CODES,DS:DATAS
START:MOVAX,DATAS
MOVDS,AX
LEADX,STRING
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
4.算法描述及实验步骤
1)用记事本输入各段程序,并储存成源程序,保存在MASM目录下。
2)对源程序进行汇编、连接。
ENDSTART
3)程序的跟踪执行操作
在DOS下直接输入文件主名就可以执行文件了,有的程序会显示结果,可能执行后什么结果都没有,是因为程序中没有显示命令。那么如何查看程序的运行结果呢?
程序执行过程的跟踪操作步骤如下:
(1)在DOS下输入:DEBUG 文件名.EXE
(2)在DEBUG提示符下输入ቤተ መጻሕፍቲ ባይዱ命令
③BEINGMOV AX,DATA改为BEING: MOV AX,DATA
④MOV【SI】,0ABH改为MOV SI,0ABH
⑤MOV AX, VAR1+2改为MOV AX,WORD PTR [VAR1+2]
⑥MOV [BX],[SI]改为MOV [BX],SI
⑦MOV VAR5+4,VAR4改为MOVAX,VAR4
刘永芬
3
实验三分支循环程序设计
刘永芬
4
实验四DOS功能调用
刘永芬
5
实验五子程序设计
刘永芬
总平均
福建农林大学金山学院实验报告
系:信息与机电工程专业:电子信息工程年级:2009
姓名:庄建军学号:092230069实验课程:汇编语言
实验室号:__1#605实验设备号:A4实验时间:2011.4.25
指导教师签字:成绩:
SUB AL,X;W-X→(AL)
MUL T;(W-X)*10→(AX)
ADD AX,5;(W-X)*10+5→(AX)
MOV BL,X
ADD BL,Y;分母:X+Y→(BL)
DIV BL;((W-X)*10+5)/(X+Y)→(AX),商存AL,余数存AH
MOV Z,AL
MOV Z+1,AH
MOV AH,4CH
(4)如果系统没有提示出错,那么汇编过程就完成了。如果提示错误则应打开源文件进行修改,然后再重复(2)和(3)步骤。
(5)输入:LINK文件主名
run file [.exe]:按回车键。
list file [nul.map]:按回车键。
libraries [.lib]:按回车键。
(6)如果没有提示错误,汇编过程就结束了。产生了.exe可执行文件。
福建农林大学金山学院
(程序设计类课程)
实验报告
课程名称:
汇编语言
姓名:
庄建军
系:
信息与机电工程
专业:
电子信息工程专业
年级:
2009级
学号:
092230069
指导教师:
刘永芬
职称:
助教
2010~2011学年第二学期
实验项目列表
序号
实验项目名称
成绩
指导教师
1
实验一汇编程序的汇编及运行
刘永芬
2
实验二顺序程序设计
3.实验内容及实验数据记录
(1)将数据段输入,取名1.txt,保存在MASM文件夹下。生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?
DATASEGMENT
ORG 20H
NUM1=8
NUM2=NUM1+10H
DA1 DB‘IBM PC’
MOV AH,4CH
INT21H
CODEENDS
ENDSTART
(3)输入正确的程序,汇编、连接、运行
STACKSSEGMENTSTACK
DW128 DUP(?)
STACKSENDS
DATASSEGMENT
STRINGDB‘WELCOME!’,13,10,‘$’
DATASENDS
CODESSEGMENT
DSEGSEGMENT
MSG1DB 'ABC'
DSEGENDS
CSEGSEGMENT
ASSUMECS: CSEG, DS: DSEG
START: MOVAX, DSEG
MOVDS, AX
LEABX, MSG1
MOVCX, 3
S:MOVAL, [BX]
ORAL, 00100000B ;将AL中的ASCII码的第5位置1,
;变成小写字母。
MOV [BX], AL
INCBX
LOOPS
MOVAL, 0
MOVAH, 4CH
INT21H
CSEGENDS
ENDSTART
4)编写以下程序: ,X,Y,W为字节类型变量,结果存于Z单元(无符号数)。
(1)分析问题:设W,X,Y的值存放在字节变量W,X,Y中,再定义一个字节变量T来存放数据10,结果存放在字变量Z中。
①初始化;②无符号数相减SUB,两操作数位数需一致,题目中显示W和X都为字节类型,由此可见二者位数已经一致了。因此把W-X的值存于AL中;
③无符号数乘法MUL(单操作数),被乘数在AL中,将W-X的值送入AL后,执行MUL T,因为8bit*8bit,结果超过8位,结果应存于AX中;④无符号数相加ADD,AX+5;⑤无符号数相加ADD,X+Y存入BL中;⑥无符号数除法DIV(单操作数),被除数在AX中,将(W-X)*10+5的值送入AX后,执行DIV BL,商存于AL中,余数存于AH中;⑦把AL和AH的值送入Z和Z+1。
操作如下:
(1)在DOS状态下,进入MASM目录;
(2)输入命令:MASM文件名
(3)在系统出现的提示中输入:
object filename[.obj]:按回车键。
source listling[nul.lst]:输入:文件名,生成list文件。
cross-reference [nul.crf]:按回车键。
实验的硬件环境是:
IBM—PC机及其兼容机
实验的软件环境是:
操作系统:DOS 2.0以上;调试程序:DEBUG.COM;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。
3.实验内容及实验数据记录
1)输入程序观察寄存器变化
使用DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。注意用T命令执行时,CS: IP寄存器的内容
MOVAX, 4E20
ADDAX, 1416
MOVBX, 2000
ADDAX, BX
MOVBX, AX
ADDAX, BX
MOVAX, 001A
姓名:庄建军学号:092230069实验课程:汇编语言
实验室号:1#605实验设备号:A4实验时间:2011.05.09
指导教师签字:成绩:
实验二 顺序程序设计
1.实验目的和要求
1.学习使用DEBUG的命令;
2.使用DEBUG命令在数据段中查看程序运行的结果;
3.利用DEBUG运行简单的程序段。
2.实验环境
(3)可以用T命令单步执行指令,执行到 MOV AH, 4CH时结束,也可以用G命令执行整个程序,输入:G=B地址(如:G=0000)
(4)用D命令查看程序执行后数据段的变化
输入:D K地址:0 (如:D1260:0)
在显示的数据中,对照源程序或LST文件查看结果所在的偏移地址的内容。
4)编写调试下面的程序,用DEBUG查看数据段中的结果
将大写字母改成小写字母:
思路:eg:A的ASCII码为41H,用BCD码表示为0100 0001;a的ASCII码为61H,用BCD码表示为0110 0001。要把大写A改成小写a,它们就第五位不一样,因此只要把0100 0001和0010 0000进行或(OR)运算即可。
将大写字母改成小写字母的代码如下:
DA2DB 0AH,0DH
COUNT EQU $-DA1
DATAENDS
END
(2)输入有错误的文件,修改错误语句。(MASM没有出现错误即可。不
必连接、运行。)
DATASEGMENT
VAR1DB 0,25,ODH,300
VAR2DB 12H,A4H,6BH
VAR3DB’ABCDEF’
VAR4DW 1234H,5678H
3)执行程序(由DOS中的COMMAND命令将文件加载入内存),在DOS提示符下直接输入文件主名执行文件。程序执行后,有的会显示结果,有的可能执行后什么结果都没有,是因为程序中没有显示命令。
5.调试过程
1.1.lst文件
2
改正后
3
运行结果
6.实验结果
1.COUNT . . . . . . . . . . . . .NUMBER0008
MOVBX, 0026
ADDAL, BL
ADDAH, BL
ADDBH, AL
MOVAH, 0
ADDAL, BL
ADDAL, 9C
2)下列程序单步运行,注意AL,BX,CX寄存器的变化,并观察数据段字母的变化。
DSEGSEGMENT
MSG1DB'abc'
DSEGENDS
CSEGSEGMENT
ASSUMECS: CSEG, DS: DSEG
START:MOVAX, DSEG
MOVDS, AX
LEABX, MSG1
MOVCX, 3
S:MOVAL, [BX]
ANDAL, 11011111B;将AL中的ASCII码的第5位置0,
;变成大写字母。
MOV [BX], AL
INCBX
LOOPS
MOVAL, 0
MOVAH, 4CH
INT21H
CSEGENDS
INT 21H;返回DOS
CODE ENDS
END START
(4)程序运行结果见实验结果。
编写以下程序:X,Y为字节类型数,求 ,不用乘除指令。
(1)分析问题:设X,Y的值存放在字节变量X,Y中,结果存放在字变量Z中。①初始化;②无符号数相加ADD,两操作数位数需一致,题目中显示X为字节类型,由此可见二者位数已经一致了。因此把X+X的值存于AL中;③无符号数乘法,运用算术左移来完成,此时要求乘以8,则需左移三位,由于移位指令的格式,因此需把所移动的位数(此时移动位数为3)放入CL中,即“MOV CL,3”再运用“SAL AL,CL”来完成;④无符号数相减SUB,X-Y存入BL中;⑤无符号数相乘,同③,运用“MOV CL,1”“SAL AL,CL”来完成;⑥无符号数除法,运用算术右移来完成,此时要求除以16,则需右移四位,由于移位指令的格式,因此需把所移动的位数(此时移动位数为4)放入CL中,即“MOV CL,4”再运用“SAR AL,CL”来完成;⑦把AL的值送入Z。
(1) ,X,Y,W为字节类型变量,结果存于Z单元,写出数据段和代码段。(无符号数)
(2)X,Y为字节类型数,求 ,写出完整的数据段和代码段,不用乘除指令。(无符号数)
4.算法描述及实验步骤
1)编译运行完成后,用t命令执行,观察CS: IP寄存器的内容。
2)将小写字母改成大写字母:
思路:eg:A的ASCII码为41H,用BCD码表示为0100 0001;a的ASCII码为61H,用BCD码表示为0110 0001。要把小写a改成大写A,它们就第五位不一样,因此只要把0110 0001和1101 1111进行与(AND)运算即可。
DA1 . . . . . . . . . . . . . .L BYTE0020DATA
DA2 . . . . . . . . . . . . . .L BYTE0026DATA
2
①VAR1DB0,25,ODH,300改为VAR1 DB 0,25,0DH,30
②ASSUME CS:CODE,DE:DATA改为ASSUME CS:CODE,DS:DATA
⑧END START去掉START
3.运行结果是输出WELLCOME!
7.总结
通过本次实验,让我学会了对汇编程序的汇编.连接.以及执行的整个过程。熟悉了编写到执行的操作流程。总之,要学好这门语言,掌握它的基本方法,对于今后的学习都是关键。
福建农林大学金山学院实验报告
系:信息与机电工程专业:电子信息工程年级:2009
相关文档
最新文档