实验三 宏汇编语言程序上机过程及调试1
汇编语言上机操作及程序调试的方法

汇编语⾔上机操作及程序调试的⽅法汇编语⾔上机操作及程序调试的⽅法第⼀节在IBM-PC机上运⾏汇编源程序所必备的软件为了在IBM-PC机上运⾏汇编源程序,机器上必须有DOS操作系统环境,DOS系统盘上应有下列⽂件:EDIT ⽂件编辑程序MASM 宏汇编程序LINK 链接程序DEBUG 调试程序第⼆节在IBM-PC机上运⾏汇编源程序的步骤当⽤户编制好汇编语⾔源程序之后,要在机器上运⾏,必须经过以下⼏个步骤:1.⽤EDIT命令建⽴与修改汇编源程序⽂件(ASM⽂件)源程序就是⽤汇编语⾔的语句编写的程序,必须以ASM为附加⽂件名。
2.⽤MASM命令汇编源⽂件以产⽣相应的⽬标⽂件(OBJ⽂件)3.⽤LINK命令连接⽬标⽂件以产⽣可执⾏⽂件(EXE⽂件)4.调试、运⾏可执⾏⽂件上机过程⽰意图如下:汇编语⾔程序编辑程序汇编程序连接程序调试程序有错吗?运⾏程序Y N图2-1 汇编语⾔程序上机过程流程第三节 DEBUG 程序调⽤及汇编语⾔程序调试⽅法调试程序DEBUG 是DOS ⽀持的⼜⼀种系统软件,主要⽤于汇编语⾔程序的调试。
汇编和连接过程只能查出源程序的语法错误,不能查出功能上的错误和程序不完善的地⽅。
⼀、DEBUG 程序的启动DEBUG 程序有两种启动⽅法。
第⼀种启动⽅法:只要打⼊DEBUG 和回车键,就可以把它装⼊内存。
但是这样启动只把DEBUG 程序本⾝装⼊内存并进⼊等待DEBUG 命令状态,还没有把要调试的程序装⼊内存。
第⼆种启动DEBUG 的程序的⽅法是⼀次相继装⼊DEBUG 程序和要调试的程序。
打⼊的命令格式如下:DEBUG[d :][path]filename[.ext][parml]Lparm2]其中的Filename 是要调试程序的⽂件名,可选项[d:][path]和[.ext]分别是要调试程序的所在盘符、路径和扩展名。
可选项[parml]和[parm2]是DEBUG 程序为要调试程序准备的参数(⼀般不⽤)。
实验一、汇编语言程序的上机过程及调试

实验一、汇编语言程序的上机过程及调试<i>汇编程序调试过程</i>实验一、汇编语言程序的上机过程及调试<i>汇编程序调试过程</i>一、实验目的熟练掌握汇编语言上机汇编、连接和装入运行。
学会使用调试程序DEBUG或TD来进行程序调试。
<i>汇编程序调试过程</i>二、实验内容(一)汇编程序建立过程a.建立汇编源程序─通过b.编译为目标文件d.连接为可执行文件c.不通过,重新修改(语句错误)f.不正确,用调试工具调试,重新修改(逻辑错误)e运行正确g.完成<i>汇编程序调试过程</i>汇编语言的源程序需要编译和连接后才能在计算机上执行。
汇编语言源程序扩展名规定为.ASM。
用MASM编译源程序后,将产生源程序的目标程序文件,其扩展名为.OBJ。
再经过连接程序(LINK)把目标程序文件与库文件或其他目标文件连接在一起形成可执行文件(扩展名为.EXE)。
这时就可以运行该程序了。
DOS下可直接键入可执行程序的文件名从而运行该程序。
<i>汇编程序调试过程</i>(二)过程详细说明步骤a: 建立汇编源程序如果现在的根目录不是E盘,写入E :然后回车,再打入cd *** (***是你新建的文件夹名),例如电气031班的同学,现在你的DOS界面根目录为:E\dq031 。
打入edit然后回车,EDIT的操作画面便会出现在屏幕上,alt键可以控制工具栏操作,←↑→↓箭头控制阴影选择的上下移动。
我们现在按alt键,选中flie, 按↓选中open,回车,找到刚刚拷贝的asm 文件,回车。
选择存盘并给你输入的文件起一个文件名,形式:*** . asm ;然后回到dos环境。
<i>汇编程序调试过程</i>步骤b: 编译目标文件在DOS提示符下键入MASM *** .asm回车,(其中***为你刚才在*****RE a 中建立的文件名)这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会出现三次提问,在这可以一路回车即可。
汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法一、汇编源程序的建立1. 使用工具(1)EDIT,记事本等文本编辑软件,编辑源程序,保存为.asm文件;(2)ASM,MASM汇编程序,对源程序进行汇编,生成.obj文件-目标文件,以及调试用.LST-列表文件和.CRF-交叉引用表;(3)Link连接程序,对使用的目标文件和库文件进行连接,生成.exe文件,同时调试用.map-地址映像文件;如果源程序无语法错误,上述三步将生成可运行的.exe文件,如果运行结果无误,则完成对汇编程序的编程,如果运行后结果存在错误,需要进行调试。
(4)Debug调试程序,对.exe文件进行调试,修改,直到程序正确。
图3 目标程序生成步骤图2. 编程过程(1)用文本编辑软件,编写扩展名为.asm的源文程序文件。
(2)用汇编程序对编好的源文件进行汇编。
命令行:masm [*.asm] ↙如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称的目标文件.obj。
使用MASM50汇编程序进行汇编,输入命令行masm或者masm *.asm后,根据提示,输入文件名,在汇编没有错误的情况下,如屏幕所示:汇编程序可生成三个文件,*.obj,*.lst和*.crf。
*.obj-目标文件,用于连接生成可执行文件;*.lst-列表文件(可选),汇编语言汇编的机器语言与汇编语言对照表,可用于调试;*.crf-交叉引用文件(可选),给出了用户定义的所有符号和对每个符号定义、引用的行号。
(3)目标文件的连接命令行:link [*.obj] [*.obj] [*.lib] ↙连接程序,将多个目标程序及库文件,连接生成可执行的*.exe文件,同时可选择生成*.map文件。
*.map-地址映像文件,给出内存地址分配的有关信息。
下图所示屏幕,为Link连接两个目标文件,没有错误的情况下,生成*.exe 文件。
汇编语言程序的上机过程

汇编语言的上机过程汇编语言程序的上机过程包括编辑、汇编、连接和执行这四个步骤。
汇编程序我们提供宏汇编程序MASM5.0和MASM6.14两个版本。
1、建立源程序文件建立和编辑汇编语言源程序可以使用EDIT、记事本、写字本,也可以使用TC等来输入源程序。
保存时,源程序文件的扩展名必须是ASM。
练习:(1)在DOS下用编辑软件EDIT建立如下源程序文件,将文件保存为Hello.ASM,保存在MASM5目录下。
(调用命令“C:\EDIT”进入EDIT编辑器。
)源程序文件如下:DSEG SEGMENTMESSAGE DB 'HOW DO YOU DO?',0DH,0AH,24HDSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGBEGIN:MOV AX,DSEGMOV DS,AXMOV DX,OFFSET MESSAGEMOV AH,9INT 21HMOV AH,4CHINT 21HCSEG ENDSEND BEGIN(2)编程计算1+2+3+ ……+100,和放在AX寄存器中,要求用循环实现。
对于MASM5.0和MASM6.14两个版本,编译和连接的方法有所不同。
以下分别就两个版本的编译和连接的方法进行讲解。
如果使用MASM5.0的话,操作方法如下(以HELLO.ASM源程序文件为例):2、对源程序进行汇编,生成目标文件HELLO.OBJ。
操作:(1)在DOS下进入MASM5.0的目录,如C:\MASM5>(2)敲入命令: MASM HELLO说明:.obj文件:目标代码文件,纯二进制代码文件,不能直接显示在屏幕上。
.lst文件:包含源程序中各语句及其对应的目标代码,各语句的偏移量等相关信息,对调试程序有帮助,但一般情况不需要。
.crf文件:交叉索引文件,给出源程序中定义的符号引用情况,初学时不需建立。
3、连接目标文件,生成执行文件HELLO.EXE,操作:敲入命令LINK HELLO说明:.EXE文件:可执行文件.MAP文件:连接映象文件,包括各个段在存储器中的分配情况,初学时不需要。
实验一汇编语言程序上机过程与调试

实验⼀汇编语⾔程序上机过程与调试实验⼀汇编语⾔程序上机过程与调试(基本指令实验)⼀、实验⽬的1、熟悉80X86寻址⽅式及基本指令的功能,进⼀步理解和巩固课堂学习的内容。
2、掌握汇编语⾔程序设计上机过程和汇编语⾔源程序结构,为后续汇编语⾔程序设计打好基础。
3、熟悉Masm for windows集成实验环境,以及DEBUG、CODEVIEW调试⼯具的使⽤⽅法。
⼆、实验预习要求1、熟悉汇编语⾔程序设计上机步骤,熟悉DEBUG、CODEVIEW调试⼯具的使⽤⽅法。
2、复习80X86操作数寻址⽅式及基本指令。
3、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运⾏环境的问题除外),以便在实验时进⾏验证。
三、实验内容(⼀)、读懂下列源程序,使⽤Masm for windows集成实验环境⽣成名为EX11.ASM的源程序,汇编⽣成EX11.OBJ⽂件和EX11.LST⽂件,连接⽣成EX11.EXE⽂件;⽤EDIT 或记事本打开EX11.LST⽂件,了解.LST⽂件包含的信息;使⽤DEBUG 和CODEVIEW调试⼯具单步执⾏EX11.EXE程序,注意观察IP值的变化,并回答下列问题。
1. 程序装⼊后,代码段寄存器CS的内容为0B68 H,代码段第⼀条可执⾏指令:MOV AX,DATA对应的机器代码为B81A0B H,它是⼀个3 个字节的指令,注意观察执⾏该指令时IP值的变化情况,该指令源操作数DATA的寻址⽅式是直接寻址,其值为0B6A 。
2. 执⾏完MOV DS,DA TA指令后,DS的内容为0B6A H,源程序在数据段中定义的数据82H,68H,88H被装⼊的存储单元的物理地址分别是0B6A0 H,0B6A1H,0B6A2H.3. 程序中第⼀条ADD AL,[BX]指令对应的机器代码为0207 H,它是⼀个2个字节的指令,注意观察执⾏该指令时IP值的变化情况;该指令源操作数的寻址⽅式是直接寻址,该操作数所在存储单元的逻辑地址(DS):(BX)为0B6A:0001 ,其物理地址为0B6A1H;执⾏完该指令后(AL)= EA H,CF= 0 ,OF= 0 ,ZF= 0,SF= 1 ,AF= 0 ,PF= 0 ;若两操作数为⽆符号数,计算结果是否正确?z 若两操作数为带符号数,计算结果是否正确?z若计算结果正确,结果是正数还是负数?f4.执⾏完第⼆条ADD AL,[BX]指令后(AL)= 72 H,CF= 1 ,OF= 1 ,ZF= 0 ,SF= 0,AF= 1 ,PF= 1 ;若两操作数为⽆符号数,计算结果是否正确?B 若两操作数为带符号数,计算结果是否正确?B5.指令MOV SUM,AL中,⽬的操作数的寻址⽅式为直接寻址。
汇编语言上机调试步骤

(A+B)*(C-D)为例
1.编辑原文件 编辑原文件
A)在cmd下,用edit编写扩展名为.asm的原文 件,知道原程序文件存放的路径。 B)在记事本下编写原程序,扩展名为.asm。
2.生成 生成.obj文件 生成 文件
利用汇编程序masm把原文件生成obj文件。 具体步骤如图:
使用debug 把应用程序调入内存 u反汇编命令
注意观察 AX,DS
r 显示或改变一个或多个 CPU 寄存器的内容。
注意观察 AX,DS 单步调试命令(或跟踪命令)
下一步执行的指令
注意观察DS D(转储)示一定范围内存地址的内容。
观察这些 数据
观察这些 数据
观察AX的低8位
观察A 果
在运行下输入cmd,进入到masm下面: ,进入到 下面: 在运行下输入 下面
原程序路径 及原程序
生成的目标程序及 其位置
原程序是否有语法错误,如果没 有生产obj文件,否则不能生成 obj文件。
Link生成 生成exe文件 生成 文件
link命令输入 obj文件所在位置
exe文件所在位置
调试程序观察值
实验三 汇编语言程序上机过程

实验三汇编语言程序上机过程实验目的:1、掌握常用工具软件 PE,MASM和LINK的使用。
2、伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP。
3、利用的 1号功能实现键盘输入的方法。
4、了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法。
程序:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$' data endsstack segment para stack 'stack'db 50 dup(?)stack endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bnd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start实验步骤:1、用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。
2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。
若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
3、用TYPE命令显示1产生的.LST文件。
4、用LINK将.OBJ文件连接成可执行的.EXE文件。
5、在DOS状态下运行LINK产生的。
汇编上机实验报告

汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。
实验内容:实验一:汇编程序的简单输入输出1.编写一个汇编程序,要求从键盘输入两个整数,然后将其相加,并将结果输出到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验二:汇编程序的条件跳转1.编写一个汇编程序,要求从键盘输入一个整数,判断其是否大于10,若是,则将其打印到屏幕上;否则,将其乘以5并打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验三:汇编程序的循环1.编写一个汇编程序,要求计算1到10的累加和,并将结果打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验四:汇编程序的数组操作1.编写一个汇编程序,要求定义一个长度为10的数组,并将数组中的值初始化为0,然后利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验结果:实验一:汇编程序的简单输入输出编写的汇编程序通过键盘输入两个整数,实现了相加并将结果输出到屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验二:汇编程序的条件跳转编写的汇编程序通过键盘输入一个整数,根据条件判断,实现了将输入数大于10时打印在屏幕上,否则将其乘以5并打印在屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验三:汇编程序的循环编写的汇编程序通过循环计算1到10的累加和,并将结果打印在屏幕上。
程序运行正常,输出结果与预期一致。
实验四:汇编程序的数组操作编写的汇编程序通过定义一个长度为10的数组,并将数组中的值初始化为0,利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三宏汇编语言程序上机过程及调试
一、实验目的:
1、掌握常用工具软件 EDIT,MASM和LINK的使用。
2、伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP。
3、利用的 1号功能实现键盘输入的方法。
4、了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法。
二、宏汇编调试步骤:
1、输入程序:用文字编辑工具(记事本或EDIT)将源程序输入,命名为*.ASM,保存到
c:\masm5目录中;
2、进入dos命令行:开始\运行\cmd 回车;
3、进入masm目录:在dos操作符下键入 cd c:\masm5 回车;
4、编译文件:在dos操作符下键入 masm *.asm,生成*.OBJ文件和*.LST文件;
5、链接文件:在dos操作符下键入 link *.Obj,生成可执行文件*.exe
6、运行:在dos操作符下键入 *.exe
程序:
data segment
message db 'This is a sample program of keyboard and disply'
db 0dh,0ah,'Please strike the key!',0dh,0ah,'$' data ends
stack segment para stack 'stack'
db 50 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start: mov ax,data
mov ds,ax
mov dx,offset message
mov ah,9
int 21h
again: mov ah,1
int 21h
cmp al,1bh
je exit
cmp al,61h
jc nd
cmp al,7ah
ja nd
and al,11011111b
nd: mov dl,al
mov ah,2
int 21h
jmp again
exit: mov ah,4ch
int 21h
code ends
end start
三、实验内容:
1、分析程序实现功能;
2、调试所给程序;记录运行结果
3、将上述程序修改为:在屏幕上显示标题并提示你按键,每按一键在屏幕上显示二个相同
的字符,将小写字母改成大写字母。
按ESC键可返回DOS。
四、实验报告:
1、汇编,连接及调试时产生的错误,其原因及解决办法。
2、记录原程序运行结果;
3、记录修改后程序代码,记录运行结果;
4、若在源程序中把INT 21H的'H'省去,会产生什么现象?
5、把 INT 21H 4CH号功能改为 INT 20H,行不行?。