《汇编语言程序设计》实验指导书(2016)
汇编语言实验指导书(第1组)

实验一、Debug调试实验指导书一、实验目的1.进一步学习汇编语言基本指令使用方法;2.学习DEBUG调试工具的基本使用方法;掌握debug调试命令a、u、r、d、t、g等3.逐条观察程序指令的执行过程,理解指令的功能,理解程序自动、顺序地执行的概念,实践其过程(重点)。
二、实验题目1.编写、输入一个32位二进制数相加程序,逐条执行指令,观察指令执行情况。
2.使用已经过汇编和连接的小程序(t3-2.exe),将其装入内存,逐条执行指令,观察执行过程和结果。
在实验过程中,使用D命令修改XXX和YYY单元中的数据,再重新计算其结果。
三、编程提示1.启动计算机的WINDOWS操作系统,运行DEBUG程序。
2.方法1:在开始菜单中找到“运行”,输入“cmd”后回车,启动ms-dos command程序,再在该程序内输入“DEBUG”并按回车,即启动DEBUG调试程序。
3.方法2:在开始菜单中找到“运行”,输入“DEBUG”后确定,即启动DEBUG调试程序。
4.开始编程方法1:在debug中输入a命令,并回车。
显示出的地址是当前指令代码所存放的地址。
接着,逐条有序地输入汇编指令,直接回车即可结束程序指令的输入过程。
如需修改程序,则先确定错误指令的地址,再使用“a 地址号”命令修改。
注意,修改前后指令长度如发生改变,会对该指令以后的指令码的存储造成影响,使程序不能正确执行。
(为什么?)方法2:将事先已经准备好的可执行程序(.exe文件)装入存储器,使用如下命令:debug 文件名.exe。
(.exe必须写全,否则找不到程序文件,为什么?)5.程序调试过程(1)使用u命令将程序反汇编,观察其汇编指令的与源程序的对应关系,观察每一条指令的代码、存放地址、指令代码长度等;(重要)(2)使用r命令读出各寄存器中的数值,从CS:IP寄存器中的数值确定程序当前应执行的指令;(结合计算机硬件知识加以理解)(3)察看当前指令的长度、指令代码、指令功能、操作数的寻址方式、所涉及的寄存器和存储器中的数值;(4)使用d命令读出所关注的存储器中的数值,并计算其地址顺序;(5)使用t命令执行单条指令,察看指令执行后相关存储器和存储器中的数值变化情况,察看标志位寄存器的变化情况,判断指令执行后的计算结果是否正确?如遇到条件转移指令时要判断是否转移,转移或不转移时下一条指令的地址是什么?(重要)(6)使用e命令读出、修改存储器中的相关数据,可重新执行相关计算指令,再观察结果。
汇编语言实验指导书 2016

汇编语言实验指导书实验环境:1. 硬件:PC微机2. 软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE注:DOS系统(WINDOWS下的虚拟8086方式)上机注意事项●进入”命令提示符(DOS空间)”有多种方法:1. 通过附件进入:命令提示符↓2.“开始”→“运行”→敲入命令“cmd”;3.键盘 wir + r →敲入命令“cmd”●dos命令窗口大小调整办法:在DOS窗口标题栏上点击右键,选择“属性”,在“布局”标签页中修改“窗口大小”设置。
●常用DOS命令:回根目录命令:cd..↓ cd\↓(一次退到根)转到D盘命令: D:↓看D盘目录命令:D:\>dir↓进入文件夹命令:cd xxx↓●用编辑软件输入完整的汇编语言源文件,在Windows系统下用记事本即可;在DOS 系统下用EDIT软件编辑。
要求编辑完成的文件扩展名一定是.asm实验一DEBUG命令实验一.实验目的:熟悉DEBUG程序和命令,并用它运行基本指令和察看运行结果。
○1怎样调用Debug②如何显示和修改内存单元③如何显示和修改CPU的寄存器④各标志位的状态是如何表示的,怎样修改标志寄存器⑤怎样汇编与反汇编⑥怎样执行程序⑦怎样跟踪程序⑧怎样退出Debug二.实验内容:DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
1、DEBUG程序的启动DEBUG的命令格式:[drive:][path] DEBUG [d:][p][filename][.ext][param...]其中:drive: 是指定DEBUG文件的磁盘驱动器标识符,DEBUG是外部DOS命令,所以必须把它从磁盘读入内存。
若未指定,DOS将使用当前默认磁盘驱动器。
path: 是DOS查找DEBUG文件的一个子目录串表示的路径。
若未指定,DOS将使用当前工作目录。
《汇编_语言》实验__指导书

BUF DB “hello,world!$”
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
6、汇编命令A:
A命令的格式为:
-A [address]
该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。
7、反汇编命令U :
U命令有两种格式:
1)从指定地址开始,反汇编32个字节,其格式为:
-U[address]
例如:
067C:0110 03 41 42 43 44 45 46 47 - 48 49 4A 4B 4C 4D 4E 4F .ABCDEFGHIJKLMNO
067C:0120 41 A
说明:
左边是用十六进制表示的存储单元地址,0100至0120是DEBUG要显示的存储单元段内偏移地址,而067C是当前数据段的段首址。中间是每个字节存储单元的内容。右边表示每个字节可以显示的字符,“.”表示是不可显示的字符。D命令一行显示16个字节单元的内容,前8个字节与后8个字节之间用-连接。
一般情况下,MASM汇编程序的主要功能有以下3点:
(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
源程序建立以后,在DOS状态下,可以采用宏汇编程序MASM对源程序文件进行汇编,方法是在DOS提示符下键入以下命令:
2.修改存储单元内容的命令E:
E命令有两种格式如下:
第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:
汇编语言程序设计指导书

《汇编语言程序设计》实验指导书适用于计科专业2004级前言汇编语言实验主要使学生掌握DEBUG调试程序中各命令的利用方式,掌握MASM汇编程序对汇编语言源程序进行编辑、汇编、连接、装配、调试到运行的上机操作方式。
本实验大纲要求学生熟练掌握汇编语言指令练习、顺序程序设计、分支程序设计、循环程序设计和子程序设计。
一、实验环境汇编语言程序设计的实验环境如下:1.硬件环境微型运算机(Intel x86系列CPU)一台2.软件环境Windows98/2000/XP操作系统任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等)汇编程序(或)连接程序(或)调试程序(或)文本编辑器建议利用EDIT或NOTEPAD,汇编程序建议利用,连接程序建议利用,调试程序建议利用。
二、上机实验步骤1.肯定源程序的寄存目录建议源程序寄存的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。
2.成立ASM源程序成立ASM源程序能够利用EDIT或NOTEPAD(记事本)文本编辑器。
注意,汇编语言源程序文件的扩展名最好起名为.ASM,如此能给后面的汇编和连接操作带来专门大的方便。
3.用汇编源程序产生OBJ目标文件源文件成立后,要利用汇编程序对源程序文件汇编,汇编后产生二进制的目标文件(.OBJ文件)。
具体操作如下:方式一:在Windows中操作用资源管理器打开源程序目录C:\ASM,把拖到程序图标上。
方式二:在DOS命令提示符窗口中操作选择“开始”→“程序”→“附件”→“命令提示符”,打开DOS命令提示符窗口,然后用CD命令转到源程序目录下,接着输入MASM命令:D:>C:<回车>C:>CD \ASM<回车>C:\ASM>MASM <回车>操作时的屏幕显示如图1所示。
图1 在DOS命令提示符窗口中进行汇编无论用以上二个方式中的哪个方式,进入MASM程序后,都会提示让你输入目标文件名(Object filename),并在方括号中显示默许的目标文件名,建议输入目标文件的完整路径名,如:C:\ASM\〈回车〉。
《汇编语言程序设计》实验指导书

前言《汇编语言程序设》在计算机科学中是一门综合性的专业基础课,是计算机专业的核心课程。
它不仅是一般程序设计的基础,而且也是设计和实现编译程序、操作系统及其它系统程序和大型应用程序的重要基础。
它为后续专业课程的学习打下了理论基础和实践基础。
由于汇编语言程序设中有大量的指令,因此汇编语言程序设实验课在教学中占有重要的地位。
通过实验可以使学生更好的巩固和掌握所学的内容,进一步增强动手能力和解决实际问题的能力。
为了提高实验的效率,任课教师提前一周布置实验任务,并且进行一定的分析和讲解,要求学生进行准备工作。
准备工作包括查找资料,设计算法,写出预习报告,其中预习报告包括题目的解题思想,概要设计,实现算法的源代码清单等。
每次实验前,学生应向实验指导教师上交实验预习报告,预习报告经指导教师认可后方能进行实验。
实验完毕写出实验报告,用A4纸打印成册(源程序存盘),由学习委员统一收齐交指导教师审阅评定。
实验成绩考核:实验成绩占《数据结构》总评成绩的20%,其中实验效果占10分,出勤率和实验报告各占5分。
有以下情形之一者,实验成绩为不及格:1.迟到,早退,无故缺勤总共3次及以上者;2.未按时完成实验达4次及以上者;3.缺交实验报告3次及以上者。
实验一简单程序编制和上机过程一.实验目的1.掌握计算机常用代码的软件转换技术。
2.熟悉DEBUG软件的使用。
3.掌握简单程序的编程方法。
二.实验内容代码转换是计算机和I/O设备进行信息交换的重要技术之一。
各种I/O设备所提供和接收的数据编码不尽相同。
为了处理这些信息,计算机必须将各种不同编码形式的信息转换成别种适当的数据形式。
例如,键盘输入的数据均为ASC Ⅱ码形式存储在内存中,通常要求将其转换成相应的数据形式。
一般实现代码转换有两种方法:1.软件法利用CPU的算术逻辑运算功能,通过运算或查表实现各种数据代码间的转换。
该方法经济但速度慢。
2.硬件法利用专用代码转换集成电路进行转换。
汇编语言程序设计实验指导

汇编语言程序设计实验指导【实验提要】以下列举的10个实验,都是以Intel的8086及后续系列微处理器的指令系统为核心,采用宏汇编工具MASM6. X以及调试工具DEBUG或DEBUG32,针对本教材所述内容进行相关的上机实践。
旨在帮助学生加深认识和理解理论教学知识,通过大量的上机实验熟悉8086 CPU的指令功能、用途和使用技巧,进而提高汇编语言程序设计的能力。
(带*号的为选作内容)实验一调试工具DEBUG的应用实验目的通过实验掌握下列知识:1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG的功能;2、DEBUG命令: A,D,E,F,H,R,T,U的使用;3、BCD码、ASCII码及用十六进制数表示二进制码的方法;4、寄存器: AX,BX,CX,DX,FLAGS,IP。
内容及步骤注:本次实验可以参照教材上关于DEBUG的叙述内容进行。
一、DEBUG 命令使用1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DEBUG, 进入调试环境,显示提示符 '- '。
2、用命令 F 200 220 'AB' 将'AB'的两个ASCII码循环填入内存。
注:第一个参数200是当前段的起始偏移地址,第二个参数220是终了偏移地址,第三个参数‘AB’是被填入的数值,若不给出第二个参数则填入128(8行)个字节。
3、用命令 D200 观察内存中的十六进制码及屏幕右边的ASCII字符。
4、用命令 F230 23F 12 重复上二项实验,观察结果并比较。
5、用命令 E200 41 42 43 44 45将A-E的ASCII码写入地址为200开始的内存单元中,再用D命令观察结果,看键入的十六进制数和ASCII码的对应关系。
6、用H命令检查下列各组十六进制数的和与差(补码表示):(1)56H,34H (2)23H,45H (3)AB,3045H注:输入 H 12 34 则在下一行显示0046 FFDE,即二者的补码和与差。
汇编语言程序设计实验指导

实验一汇编语言上机过程一、上机前的软件准备:MS-DOS操作系统(如:MSDOS6.22 , MSDOS7.0 等)文本编辑器(如: , TURBO.EXE , TC.EXE , C.EXE 等)汇编程序(如:MASM.EXE , ASM.EXE,TASM.EXE 等)连接程序(如:LINK.EXE 等)调试程序(如:DEBUG.EXE 等)二、汇编程序建立过程:通过a.建立汇编源程序────→b.编译为目标文件──┬─→d.连接为可执行文件↑↓ ↓│ c.不通过,重新修改(语句错误)││├──────────────────────┘│↑ f.不正确,用调试工具调试,重新修改(逻辑错误)↓└────────────────────────────←e运行↓正确g.完成三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明PROCEDURE a:建立汇编源程序(即:建立文件名.asm)这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。
将源程序代码录入计算机的方法很多,下面将介绍具体方法。
1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。
存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。
2.如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。
PROCEDURE b:编译目标文件(即:编译为.obj .lst .crf文件)这个过程计算机将把你编的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。
汇编语言程序设计实验指导书

实验一宏汇编MASM5.0运行环境一、实验目的1、熟悉的MASM5.0宏汇编程序运行环境2、掌握用MASM5.0运行汇编语言程序的步骤3、学习及掌握的debug程序的各种命令并调试汇编语言程序。
二、实验仪器计算机、masm汇编运行环境三、实验原理1、建立汇编语言的工作环境(1)编辑程序:EDIT .COM(2)汇编程序:MASM .EXE(3)连接过程:LINK.EXE(4)调试程序:DEBUG .EXE2、运行汇编语言程序的步骤(汇编语言程序的上机过程)在汇编实验步骤的word文档中(请下载参考)。
(1)用汇编程序建立源文件(*.asm)汇编程序:记事本,写字板或EDIT.EXE 。
(文本文件编辑器)扩展名为:.asm(2)用汇编程序(MASM、EXE)产生OBJ文件。
(3)用连接程序(LINK 、EXE)生成EXE文件。
(4)程序的执行直接输入文件名LINKEDIT记事本写字板MASM3、用DEBUG 运行、调试汇编语言程序(1)进入DEBUGC:\ DEBUG (前提DEBUG .COM 程序在C 盘)屏幕显示:- “-”这个符号是进入DEBUG的提示符,在该提示符下可键入任意DEBUG 命令,现在用A命令送程序。
(2)送程序并汇编-A 100169C:0100 MOV DL ,33169C:0102 MOV AH ,2169C:0104 MOV INT 21169C:0106 MOV INT 20169C:0101此程序已送完,并汇编成机器指令(3)现在用G命令一运送程序-G3看一下机器指令是什么样的用反汇编命令U(4)反汇编-U 100 :108段地址偏移地址指令169C :0100 B233 MOV DL ,33169C :0102 B402 MOV AH ,02169C :0104 CD21 INT 21169C :0106 CD20 INT 20169C :D108(5)用Q命令退出DEBUG 返回DOS-QC:\4、DEBUG 命令(1)汇编命令A格式1)A < 段寄存器名>:<位移> ;(段寄器)为段地址2)A <段地址> :<位移> ;(c s) 为段地址3)A <位移> ;4)A ;以CS:100作地址功能:键入该命令后显示的地址和位移并等待用户从键盘逐条键入汇编命令。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
print2: add bh,30h
mov ax,data
div bl
mov dl,bh
mov ds,ax
mov bh,ah
mov ah,2
cmp al,0
int 21h
mov bx,0
je print
exit: mov ax,4c00h
mov si,0
add al,30h
int 21h
mov di,0
四、实验步骤:
1)打开汇编语言入口,进入命令提示符下; 2)键入 EDIT,编辑源程序; 3)键入 MASM XXX.ASM; 编译源程序; 4)键入 LINK XXX.OBJ; 连接目标程序; 5)键入 DEBUG XXX.EXE, 调试可执行文件。
附实验参考源程序 data segment adb '请输入一个小写字 母:$' bdb '你输错了,请重新 输入:$' data ends
jmp input second: mov dl,0dh
mov ah,2 int 21h mov dl,0ah int 21h mov dl,bl mov ah,2 int 21h inc dl int 21h mov dl,0dh mov ah,2 int 21h mov dl,0ah int 21h jmp input error: lea dx,b mov ah,9 int 21h mov dl,0dh mov ah,2 int 21h mov dl,0ah int 21h jmp input exit: mov ax,4c00h
实验三 伪指令
一、实验目的:
掌握 DB, DW, SEGMENT, ENDS, ASSUME 等宏汇编伪指令的功能,使用规则及使用场 合。
二、实验环境:
硬件:IBM PC 及其兼容机;软件:Windows 7、Debug 、Masm.exe、 Link.exe。
三、实验内容:
请把一个由 26 个大写字母和 26 个小写字母组成的 52 个字母的字符串从源缓冲区传送 到目的缓冲区。
mov ax,extra
b_buffer db 52 dup (?)
mov es,ax
lea si,a_buffer lea di,b_buffer cld mov cx,52 rep movsb
mov ax,4c00h int 21h code ends end start
实验四 顺序程序设计
一、实验目的:
四、实验步骤:
1)打开汇编语言入口,进入命令提示符下; 2)键入 EDIT,编辑源程序; 3)键入 MASM XXX.ASM; 编译源程序; 4)键入 LINK XXX.OBJ; 连接目标程序; 5)键入 DEBUG XXX.EXE, 调试可执行文件。 附实验参考源程序
data segment
extra ends
三、实验内容:
见教材 P35 实验一
四、实验步骤:
1)打开汇编语言入口,进入命令提示符下; 2)键入 DEBUG,进入 DEBUG; 3)逐条运行 DEBUG 的 A,R,D,E,U,T,P,G 命令,掌握这些命令的用法及其功能。
实验二 [BX]和 loop 的使用
一、实验目的:
熟练掌握[BX]和 LOOP 的使用。
shift1: lea dx,b mov ah,9 int 21h mov dl,0dh mov ah,2 int 21h mov dl,0ah int 21h jmp input2
exit: ret main endp code ends end start
2. 编写程序,将一个含有 20 个数据的数组 M 分成两个数组,正数组 P 和负数组 N, 并分别把两个数组中数据的个数显示出来。
《汇编语言程序设计》
实 验 指 导 书
淮南师范学院计算机学院
实验一 利用 DEBUG 查看 CPU 和内存
一、实验目的:
熟练使用 DEBUG 的 A,R,D,E,U,T,P,G 命令,掌握这些命令的用法及其功能。
二、实验环境:
硬件:IBM PC 及其兼容机;软件:Windows 7、Debug 、Masm.exe、 Link.exe。
p1: mov P[si],ax add si,2
int 21h lea dx,B mov ah,9 int 21h mov ax,n_cnt
data ends
inc word ptr
mov bl,10
P_CNT
div bl
code segment
mov bh,ah
main proc far
xiugai: add bx,2
cmp al,0
assume
loop compare
je print2
cs:code,ds:data
lea dx,A
add al,30h
start:
mov ah,9
mov dl,al
push ds
int 21h
mov ah,2
sub ax,ax
mov ax,p_cnt
int 21h
push ax
mov bl,10
cs:code,ds:data start:push ds sub ax,ax push ax mov ax,data mov ds,ax lea dx,A mov ah,9 int 21h
mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h
code segment assume cs:code,ds:data பைடு நூலகம்tart:
mov ax,data mov ds,ax input: lea dx,a mov ah,9 int 21h mov dl,0dh mov ah,2 int 21h mov dl,0ah int 21h
mov ah,1 int 21h mov bl,al cmp bl,0dh jz exit1 cmp bl,'a' jl error je first cmp bl,'z' je special1 jg error mov dl,0dh
int 21h
code ends end start
实验五 分支程序设计
一、实验目的:
掌握画分支程序流程图的方法。掌握使用分支指令如 JZ,JS,JMP 等指令设计分支 程序。
二、实验环境:
硬件:IBM PC 及其兼容机;软件:Windows 7、Debug 、Masm.exe、 Link.exe。
int 21h
mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h
jmp input1 shift: lea dx,b mov ah,9 int 21h mov dl,0dh mov ah,2 int 21h mov dl,0ah int 21h jmp input1
mov dl,'=' mov ah,2 int 21h
add bl,bh mov al,bl mov ah,0 mov bl,10 div bl mov bh,ah cmp al,0 je disp add al,30h mov dl,al mov ah,2 int 21h
disp: add bh,30h mov dl,bh mov ah,2
input1:mov ah,01 int 21h mov bl,al cmp bl,0Dh jz exit cmp bl,39h jnle shift sub bl,30h
mov dl,'+' mov ah,2 int 21h
input2:mov ah,01 int 21h mov bh,al cmp bh,0Dh jz exit cmp bh,39h jnle shift1 sub bh,30h
mov dl,0dh
Pdw 20 dup (?)
add di,2
mov ah,2
Ndw 20 dup (?)
inc word ptr
int 21h
P_CNT dw 0
N_CNT
mov dl,0ah
N_CNT dw 0 Adb '正数的个数 是:$' Bdb '负数的个数 是:$'
jmp near ptr xiugai
三、实验内容:
1. 编制一个在屏幕显示两个一位十进制数相加,并输出其和的汇编语言程序。
(参考源程序如下):
data segment A db '本程序是用
来做(0—9)加法运算$' B db '输入错误!请
重试:$' data ends
code segment main proc far assume
二、实验环境:
硬件:IBM PC 及其兼容机;软件:Windows 7、Debug 、Masm.exe、 Link.exe。
三、实验内容:
见教材 P121 实验四
四、实验步骤:
1)打开汇编语言入口,进入命令提示符下; 2)键入 EDIT,编辑源程序; 3)键入 MASM XXX.ASM; 编译源程序; 4)键入 LINK XXX.OBJ; 连接目标程序; 5)键入 DEBUG XXX.EXE, 调试可执行文件。
mov dl,al
code ends
mov cx,20
mov ah,2
end start
compare:
int 21h
四、实验步骤:
1)打开汇编语言入口,进入命令提示符下; 2)键入 EDIT,编辑源程序; 3)键入 MASM XXX.ASM; 编译源程序; 4)键入 LINK XXX.OBJ; 连接目标程序; 5)键入 DEBUG XXX.EXE, 调试可执行文件。