《汇编语言实验报告》
姓名:刘坤
学号:109074153
班级:软件101班
实验一 汇编运行环境及
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
、简单程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
一、程序说明
本程序用来比较两个字符串string1和string2所含的字符是否相同。若相同则显示‘Match’,否则显示‘Nomatch’。
在程序的数据段先定义两个字符串string1和string2,再定义两个字符串mess1和mess2,分别代
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
‘Match’和‘Nomatch’。再代码段比较字符串string1和string2,通过比较判断是否相同。若相同则显示‘Match’,否则显示‘Nomatch’
2、源程序
datarea segment
string1 db 'Move the cursor backward.'
string2 db 'Move The cursor backward.'
mess1 db 'match.',10,13,'$'
mess2 db 'no match.',10,13,'$'
datarea ends
progment segment
main proc far
assume cs:prognam,ds:datarea,es:datarea
start:push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov es,ax
lea si,string1
lea di,string2
cld
mov cx,25
repz cmpsb
jz match
lea dx,mess2
jmp short disp
match:lea dx,mess1
disp:mov ah,09
int 21h
ret
main endp
prognam ends
end start
三、调试说明和调试结果
在EDIT中建立ASM文件,再用汇编程序对源程序汇编产生目标文件Obj,
再用连接程序产生执行文件EXE。再用Debug进行调试。
其中常用到的指令有:
用-g命令来用运行程序,用-u命令来显示程序,用-d 命令来查看数据段的情况,用-e或-f命令来修改需要改正的部分,用-t指令来逐步执行程序,用-r指令来查看寄存器和修改寄存器的值,-q命令用来退出debug程序。在这些命令的后面加上地址,可以将命令执行到相应的地方。
在debug中通过-g命令运行程序后,结果如下:
用-g指令运行程序后,再用-u指令显示程序的执行借给如下:
实验二 用DEBUG编程:使用堆栈段将
AX和BX的内容进行交换等
一、实验目的:
1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。
3、掌握简单指令的执行过程。
二、实验内容:
1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
2、设DS=当前段地址,BX=0300H,SI=0002H;请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。
三.程序清单如下:
MOV AX,BX
MOV AX,0304H
MOV AX,[0304H]
MOV AX,[BX]
MOV AX,0001[BX]
MOV AX,[BX][SI]
MOV AX,0001[BX][SI]
HLT
三、实验要求:
1、实验前要做好充分准备,包括汇编程序清单、调试
步骤
新产品开发流程的步骤课题研究的五个步骤成本核算步骤微型课题研究步骤数控铣床操作步骤
、调试方法,以及对程序结果的分析等。
2、本实验只要求在DEBUG调试程序状态下进行,包括汇编程序、调试程序和执行程序。
四、实验报告:
1、程序说明。说明程序的功能、结构。
2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3、写出源程序清单和执行结果。
<实验一>源代码
DATAS SEGMENT
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,3000H
MOV BX,5000H
PUSH AX
mov AX,BX
POP BX
MOV AH,4CH
INT 21H
CODES ENDS
END START
程序运行结果如下:
可见,AX和BX的内容已经进行了交换。
<实验二>源代码
DATAS SEGMENT
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV BX,0300h
MOV SI,0002h
MOV AH,4CH
INT 21H
CODES ENDS
END START
运行结果:
这时,先用-u查看源程序,运行结果如下:
再用-a指令从13FC:000B后面输入已给出的程序,然后用-u0指令查看程序,结果如下:
然后再用-t指令逐步执行程序,观察每步指令执行后,ax中的内容,结果如下:
可以看出,在执行完指令MOV AX,BX后,ax中的内容为AX=0300,在执行完指令MOV AX,0304H后,ax中的内容为AX=0304,在执行完指令MOV AX,[0304H] 后,ax 中的内容为AX=580E,在执行完指令MOV AX,[BX] 后,ax中的内容为AX=0B0A,在执行完指令MOV AX,0001[BX] 后,ax中的内容为AX=0C0B,在执行完指令MOV AX,[BX][SI]后,ax中的内容为 AX=0D0C,在执行完指令MOV AX,0001[BX][SI] 后,ax中的内容为 AX=0E0D。
实验三 存储器块清零和内存块移动
一、程序说明
第一个程序用来存储块清零,先设置块起始地址,然后设置块长度,再将当前地址内容清零,地址加一,然后判断是否清完,若清完则结束,否则返回到上一步。
第二个程序用来移动内存块,先设置块的源地址,再设置块的目标地址,然后设置移动长度,安长度重复传送数据直到结束。
二、调试说明
第一个程序在进入debug后,先用-u指令查看一下程序,再将断点设置在指令Loop again之后,通过指令-g加上指令Loop again后的地址,将程序运行到Loop again之后停止,然后再通过-d指令查看相关内存内容是否被清零。
第二个程序在进入到debug后,先用-u指令查看一下程序,再将断点设置在指令rep movsb之前,通过指令-g运行后,然后用-d指令查看一下内存块的相关内容,得到的结果如下
然后在将断点设置在指令rep movsb之后,通过指令-g运行后,再用-d指令查看一下内存块的相关内容,得到的结果如下:
二.程序清单及执行结果
第一部分:
DATAS SEGMENT
block db 256 dup(55h)
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov bx,offset block
mov cx,256
again:
mov [bx],byte ptr 0 ;字节填充0
inc bx
loop again
MOV AH,4CH
INT 21H
CODES ENDS
END START
第二部分:
DATAS SEGMENT
source db 256 dup(055h)
target db 256 dup(0aah)
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,ES:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV ES,AX
mov si,offset source
mov di,offset target
mov cx,256
rep movsb
MOV AH,4CH
INT 21H
CODES ENDS
END START
实验四 将键盘输入的小写字母用大写字母显示出来
一、实验目的:
1、掌握接受键盘数据的方法,并了解将键盘数据显示时,须转为ASCII码的原理。
2、掌握DOS功能调用的编程方法。
二、实验内容:
试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
三、编程提示:
利用DOS功能调用INT21H的1号功能从键盘输入字符和2号功能在显示器上显示一个字符。
四、实验要求:
实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。
五、实验报告:
1、程序说明。说明程序的功能、结构。
2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。