汇编语言实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告一:汇编语言实验基础
一.实验目的:
1. 熟悉汇编语言程序的开发过程以及汇编语言常用软件的使用方法
2. 掌握DEBUG常用命令的使用方法
二、实验内容:
1.DEBUG 命令使用
2.8088常用指令练习
三、实验步骤:
(一)DEBUG 命令使用:
1、打 DEBUG 进入 DEBUG 控制,显示提示符'_ '。
2、用命令 F 100 10F 'A' 将'A'的ASCII码填入内存。
3、用命令 D 100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。
4、用命令 F 110 11F 41 重复上二项实验,观察结果并比较。
5、用命令 E 100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单
元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码? 6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较:
(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H
(5)A758,347FH
7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容。
8、用R命令将AX,BX内容改写为1050H及23A8H。
(二)8088常用指令练习
1、传送指令
1)用A命令在内存100H处键入下列内容:
MOV AX,1234
MOV BX,5678
XCHG AX,BX
MOV AH,35
MOV AL,48
MOV DX,75AB
XCHG AX,DX
2)用U命令检查键入的程序,特别注意左边的机器码。
3)用T命令逐条运行这些指令,注意有关寄存器及IP的变化情况。
并注意标志位有无变化。
2、加减法指令:
1)用A命令在内存100H处键入下列内容:
MOV AH,34
MOV AL,22
ADD AL,AH
SUB AL,78
MOV CX,1284
MOV DX,5678
ADD CX,DX
SUB CX,AX
SUB CX,CX
2)用U命令检查键入的程序及对应的机器码。
3)用T命令逐条运行这些指令,检查有关寄存器及ZF情况。
3、内存操作数及各种寻址方式使用:
内容:
MOV AX,1234
MOV [1000],AX
MOV BX,1002
MOV BYTE PTR[BX],20
MOV DL,39
INC BX
MOV [BX],DL
DEC DL
MOV SI,3
MOV [BX+SI],DL
MOV [BX+SI+1],DL
MOV WORD PTR[BX+SI+2],2846
步骤:
1)用A命令键入上述程序,并用T命令逐条运行。
2)每运行一条有关内存操作数的指令,用D命令检查有关内存单元的内容并思考是什么寻址方式。
3)注意D命令显示结果中右边的ASCII字符及双字节数存放法。
实验报告二:分支程序实验
1. 实验目的:
(1) 掌握分支程序的设计方法
(2) 掌握利用DEBUG修改参数、检查结果的方法。
(3) 掌握汇编语言源程序的编辑、汇编、连接及调试过程。
2. 实验内容
编写一个程序,显示AL寄存器中的两位十六进制数
3. 实验准备
(1) 编写实验内容要求的程序。
(2) 写出调试以上程序,即修改程序参数,检查结果的操作方法。
(3) 熟悉源程序汇编、连接命令的使用方法即要回答的内容。
4. 实验步骤
(1) 用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。
(2) 对其进行汇编及连接,产生.EXE文件。
(3) 对.EXE文件进行调试运行。
a. 用DEBUG调试运行,学会修改AL内容的方法。
b. 对DSPKEY.EXE键入不同的字符,分别进行调试。
c. 在MS-DOS下运行这两个.EXE文件。
5. 程序:
CODE SEGMENT
ASSUME CS:CODE
START: MOV AL, 3EH
MOV BL, AL
MOV DL, AL
MOV CL, 4
SHR DL, CL
CMP DL, 9
JBE NEXT1
ADD DL, 7
NEXT1: ADD DL, 30H
MOV AH, 2
INT 21H ;显示高位ASCII码
MOV DL, BL
AND DL, 0FH
CMP DL, 9
JBE NEXT2
ADD DL, 7
NEXT2: ADD DL, 30H
MOV AH, 2
INT 21H ;显示低位ASCII码 MOV AH, 4CH
INT 21H
CODE ENDS ;返回DOS
END START
实验报告三循环程序设计实验
一.实验目的
1.熟练掌握循环程序结构的设计方法。
2.进一步熟悉DEBUG调试程序即及其各种命令的用法
3.学会在DEBUG中使用各个命令以后怎样找出自己所要的各个存储单元的地址。
4.锻炼设计程序算法和编写程序的能力。
5.理解各个控制转移指令的意义和使用方法。
二.实验内容
编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
三.实验步骤:
(1)在实验前设计好算法并编写出程序。
(2)点击桌面上的“开始”按钮,选择“运行”,在出现的对话框中输入“cmd”按“确定”,然后用cd\命令进入masm6.11文件夹。
(3)用edit+文件名.asm在masm6.11文件夹里新建一个文件并回车,进入编写程序的页面,文件名为aaa.asm。
(4)程序如下:
.model small
.stack 256h
.data
.code
.startup
mov ax,@data
mov ds,ax
l1: mov ah,01h
int 21h
or al,al
jz l3
cmp al,'a'
jb l2
cmp al,'z'
ja l2
sub al,20h
mov dl,al
mov ah,02h
int 21h
l2:jmp l1
l3: mov ax,4c00h
int 21h
end
(5)把程序保存后退出,然后用ml aaa.asm命令检查并连接程序(即ml+文件名.asm),在程序没有出错时生成aaa.obj文件和aaa.exe文件。
具体情况如下所示:
(6)进入degug调试程序。
输入debug aaa.exe(即debug+文件名.exe)回车进入debug调试。
先使用一次反汇编命令U回车后,出现前十六条指令的反汇编结果,具体情况如下:
A.在使用了第一个U命令以后可以看到我自己编写的核心指令是从
0B82:0017开始的,但这时还没有找到核心程序的结束点,故再次使用反汇编U 命令,这时页面的显示内容如下:
B.在使用第二个U命令以后可以观察到核心程序的结束点是在0b82:0036,故再使用执行断点命令G命令(输入G 0036回车),然后再键盘上输入任意的小写字母,都会自动输出对应的大写字母,如下所示:
C.当输入一个大写字母或别的内容加回车键则退出程序了。
D.该程序在连接生成了可执行程序(即exe程序)以后可以直接执行。
方法为在masm6.11文件中打开相对应的exe文件。
E.同样,要退出程序,输入大写字母或别的内容就能自动退出程序了。