实验三 宏汇编语言程序上机过程及调试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,并将每个元素的值打印到屏幕上。
宏汇编(MASN)及汇编语言上机过程实验报告
佛山科学技术学院实验报告课程名称汇编语言程序设计实验项目实验一宏汇编(MASN)及汇编语言上机过程专业班级 13 网络工程班姓名学号指导教师杨定安成绩日期2015.10. 25一、实验目的1.通过实验了解和熟悉微机系统的配置。
2.学习在DEBUG状态下输入汇编源程序的方法。
3.初步掌握调试(在DEBUG状态下)的过程。
二、实验原理1. 本实验要求在DEBUG状态下输入汇编源程序,并用DEBUG命令进行调试。
用单步跟踪的方法验证指令的功能。
2. 以下是给定的参考程序,并在实验时在每条指令的“;”符号右边按要求填写指令的执行结果。
注:⑴微机进入DEBUG状态下之后,一切立即数和地址数据均被默认为十六进制数,在输入时数的后面不加后缀“H”;⑵在DEBUG状态下执行程序时,“INT 20H”指令可使系统执行完该指令前的程序时返回到“-”提示符状态,并且恢复CS和IP寄存器原来的值。
三、实验仪器微机一台,U盘一块。
四、实验步骤1.开机和关机操作顺序开机:先打开微机外部设备电源开关,如显示器,最后打开主机电源开关。
关机:与开机相反,先关掉主机电源开关,然后关闭所有外设的电源开关。
2. 装入DEBUG程序若计算机系统启动正常,可以进入MASM文件夹或MASM5文件夹从磁盘上调用DEBUG,程序到内存。
如是WINDOWS环境下,先运行CMD命令,然后运行CD MASM命令,再运行DEB2000命令。
一般C盘上装有DEBUG和DEB2000软件,若没有,可以用复制命令从其它盘拷贝过来,然后从装有DEBUG 和DEB2000软件的磁盘上调用DEBUG和DEB2000软件程序。
例如:C :\MASM> DEB2000↙(↙回车符)-(-DEBUG 提示符)当显示器出现提示符“-”时,说明已进入DEBUG状态,这时,可用DEBUG命令进行操作。
4. 用DEBUG的Register命令检查所有寄存器内容,并作记录,主要是R命令5. 用DEBUG的Assemble命令输入汇编源程序。
汇编上机过程及DEBUG调试
汇编语言的一般上机操作过程一、上机前的软件准备●MS-DOS操作系统(如:MSDOS6.2、MSDOS7.0等)●文本编辑器(如:记事本、等)●汇编程序(如:MASM.EXE、ASM.EXE等)●连接程序(如:LINK.EXE等)●调试程序(如:DEBUG.EXE等)二、汇编语言程序的建立过程在编辑软件支持下,将源程序输入到计算机中。
注意:汇编语言源程序的扩展名为.ASM。
可使用任意一种文本编辑工具来建立和编写汇编语言源程序,例如,Word、Notepad、记事本等。
在MS-DOS下也可以使用其自带的文本编辑器EDIT。
使用方法是在DOS提示符下输入EDIT后回车,进入EDIT的操作界面后即可编写汇编语言源程序,完成编写后,将文件保存后缀名为.ASM的汇编源文件。
2.利用宏汇编程序对汇编源程序.ASM进行汇编,产生.OBJ文件利用宏汇编程序MASM对汇编源程序(扩展名为.ASM)进行汇编,产生扩展名为.OBJ的可重定位的目标代码。
MASM是一个宏汇编软件,使用时后面跟所要汇编的源程序名即可。
格式如下:C:\>MASM filename(.asm) 回车当屏幕上显示一些版权信息后会出现几个提示信息,如:要求输入目标文件名;询问是否建立列表文件(扩展名为.LST);询问是否建立交叉索引文件(扩展名为. CRF)。
Object filename [filename.OBJ]:回车Source listing [NUL.LST]:回车Cross-reference [NUL.CRF]:回车当上述问题回答完毕,MASM即开始汇编工作。
MASM对源程序进行汇编将采用两遍扫描方式,每一遍扫描都以遇到END伪指令作为结束点。
第一遍扫描是检查名字并产生一个符号表,确定每个变量名和符号的相对位置;第一遍扫描就将产生目标文件,并根据用户需要产生列表文件和交叉索引文件。
最后,经汇编后的上述源文件将生产3个文件,其中目标文件是一个二进制文件,供连接使用;列表文件是一个文本文件,它会列出源程序及相应的目标程序清单,同时给出符号表,表中分别给出段名、段的大小属性。
汇编语言上机调试流程
其他程序开发工具中的编辑环境
EDIT YY.asm
开发过程2:源程序的汇编 汇编是将源程序翻译成由机器代码组成的 目标模块文件的过程
MASM 5.0提供的汇编程序是MASM.EXE:
MASM YY.asm
如果源程序中没有语法错误,MASM将自 动生成一个目标模块文件( YY.obj );否则 MASM将给出相应的错误信息 这时应根据错误信息,重新编辑修改源程 序后,再进行汇编
汇编程序的主要功能:
•
检查源程序,给出出错信息。
• 产生目标文件(.obj)和列表文件(.lst)。
• 展开宏指令。
开发过程3:目标模块的连接 连接程序能把一个或多个目标文件和库 文件合成一个可执行程序( .EXE 、 .COM 文 件):
LINK YY.obj
如果没有严重错误, LINK 将生成一个可 执行文件( YY.exe );否则将提示相应的 错误信息 这时需要根据错误信息重新修改源程序 后再汇编、链接,直到生成可执行文件
开发过程4:可执行程序的调试
Hello, World ! 经汇编、连接生成的可执行程序在操作 系统下只要输入文件名就可以运行: YY 操作系统装载该文件进入主存,并开始 运行
如果出现运行错误,可以从源程序开始排错, 也可以利用调试程序帮助发现错误 采用DEBUG.EXE调试程序:
DEBUG YY.exe
汇编程序上机调试流程
文本编辑器,如 编 辑
错误
源程序:文件名.asm 汇编程序,如 MASM.EXE 汇 编
目标模块:文件名.obj 连接程序,如 LINK.EXE 连 接 可执行文件:文件名.exe
错误
错误
调试程序,如 DEBUG.EXE
汇编语言程序设计上机实验报告(实验三)-循环程序设计
汇编语言程序设计上机实验报告(实验三)一、实验题目、内容及要求:一、实验题目、内容及要求:题目:循环程序设计内容:编写一程序,要求从键盘接收一个4位十六进制数,在终端上显示与它等值的二进制数。
二进制数。
要求:实验前要作好充分准备,包括程序清单、调试步骤、调试方法,对程序结果的分析等。
本实验要求在EDIT 下编写完整的汇编语言程并生成可执行文件运行。
下编写完整的汇编语言程并生成可执行文件运行。
二、实验时间及地点二、实验时间及地点日期:日期: 2011/11/21 节次:节次: 7.8 地点:地点:电子实验楼二楼电子机房电子实验楼二楼电子机房 三、实验目的三、实验目的通过本实验掌握DOS 系统功能调用功能,掌握循环程序设计的方法;学会编写循环结构程序。
构程序。
简述在实验过程中遇到的问题和解决的方法:简述在实验过程中遇到的问题和解决的方法:1、问题:遇到死循环解决方法:程序显示disp 中发现执行int int 21h 21h 会修改al 的值,避免这种情况的方法就是使用堆栈段。
2、问题:调试中出现no data segment 解决方法:start 开始时没有将数据段的IP 地址赋给dx 。
data segment 3、问题:可执行,结果为乱码解决方法:数据划分比较的粗,没有系统的将数据系统划分。
系统划分:<30h other 30h-39h num 39h-41h other 41h-46h big zi mu 46h-61h other 61h-67h small zi mu >67h other 运行结果:(要求用“抓图软件”抓程序的运行结果)(要求用“抓图软件”抓程序的运行结果)结果分析及实验体会:结果分析及实验体会:1、结果0001001000110100是十六进制数1234转化而来。
十六进制数通过ASCII码对照转换为二进制数。
A~F----- -57hA~ f----- -57h0~9 ------ -37h2、学习应用了循环指令并了解了其特点:A、循环指令不影响标志位B、其功能为使寄存器CX的值减1,如果结果不等于0,则循环至标号,否则顺序执行。
微机原理实验3
《微机原理》上机实验第一次实验内容一、8086宏汇编系统盘构成1. masm.exe 宏汇编系统程序把汇编语言源程序(.asm)汇编成目标文件(.obj)2. link.exe 连接程序把目标文件(.obj)连接生成执行文件(.exe)3. cref.exe 索引程序4.Lib.exe 库管理程序5. 汇编源程序编辑工具。
二、8086宏汇编上机实验步骤第一步:编辑源程序(程序名.asm)Edit 程序名.asm(Alt+F 选择存盘)第二步:对源程序(.asm)进行汇编masm 程序名(提示两个0 ,表示源程序,程序名.asm编辑正确,否则需进入第一步,修改源程序)第三步:对目标文(.obj)件进行连接Link 程序名第四步:运行执行文件,查看结果程序名三、实验实例1、利用8086宏汇编语言,编程在屏幕上显示“Hello!”程序清单:Data segmentA db ‘Hello!$’Data endsCode segmentAssume cs:code,ds:dataStart:mov ax,dataMov ds,axLea dx, aMov ah,9Int 21hMov ah,4chInt 21hCode endsEnd start三、DEBUG上机1. DEBUG常用命令如何启动DEBUG?在DOS提示符下,输入命令DEBUG 回车出现_ 提示符,所有的DEBUG命令在_提示符下进行。
(1)汇编命令格式:A [地址](2)退出DEBUG命令格式:Q(3)文件命名格式:N 文件名(4)显示寄存器内容格式:R [寄存器名](5)写盘命令格式:W(6)运行命令格式:G(7)单步执行命令格式:T(8)反汇编命令格式:U实验二:利用DEBUG编程计算5+3,并显示结果。
程序指令清单Mov al, 5 Add al, 3 Mov dl, al Or dl,30 Mov ah,2 Int 21 Mov ah,4c Int 21《微机原理》实验3一、实验目的:通过本节课实验,使学生掌握DOS中断调用的格式以及DOS常用中断调用;掌握宏指令的定义及调用格式;掌握8086模块程序的定义及调用格式、对段间模块程序调用进行汇编的命令格式;掌握程序正常结束返回DOS的两种方法。
汇编语言程序的上机过程及调试.
三、连接程序
用连接程序(LINK)将若干目标模块连同库子程序 连接在一起,产生可执行文件(文件名.EXE)
四、运行调试 DEBUG
DEBUG 程序是专门为汇编语言设 计的一种调试工具,它通过单步、跟 踪、断点和连续等方式为程序员提供 了非常有效的调试手段。
格式: DEBUG [驱动器][路径][文件名][参数]
4. 汇编语言程序的上机过程及调试
编辑汇编语言源程序
汇编源程序 连接程序 运行调试
一、编辑汇编语言源程序
使用一种文本编辑软件(word、记事本、写 字板等),编辑保存一个 “文件名.ASM ”的 汇编语言源程序文件。
二、汇编源程序
用宏汇编(MASM)对汇编源程序进行汇编, 产生目标程序(文件名.OBJ)
求:
AX=___________ CX=___________
BX=___________
MOV AX,1200H
例 2:
MOV BX,3400H MOV CX,5600H
PUSH CX
PUSH AX PUSH BX POP CX POP AX
POP BX
AX=___________ CX=___________ BX=___________
修改内存单元内容 运行
装入 文件名 推出 显示和修改寄存器内容 跟踪 反汇编
写盘
W
把指定地址或CS:100开始的内存块(块字节长度由 BX:CX指定)以N命令给出的文件名写入磁盘
MOV AXቤተ መጻሕፍቲ ባይዱ1234H
例 1:
MOV BX,4321H MOV CX,AX
MOV AX,BX
ADD BX,CX HLT
DEBUG主要命令表
汇编语言程序的上机调试步骤
CRF文件
这个文件用来产生交叉引用表REF文件,对 于一般程序不需要建立此文件。若你想建立交叉引 用表文件,就需要先建立CRF文件。 要建立REF文件,需调用CREF程序。
建立交叉引用表文件(.ref)
交叉引用表文件LX.ref的内容
交叉引用表给出了用户定义的所有符号,对于每 个符号列出了其定义
LINK程序有两个输出文件:EXE文件和MAP文件 MAP文件是连接映象文件,它给出每个段 在存储器中的分配情况。
LX.MAP文件的内容
五、执行产生的EXE程序
六、用DEBUG调试程序
用反汇编命令U来确定我们所要设定的断点地址。
用G命令运行程序,同时设定断点OFH
2、LST列表文件
3、CRF文件,这个文件用来产生交叉引用表REF文件
LST列表文件
列表文件同时列出源程序和机器语 言程序清单,并给出符号表,因而可使程 序调试更加方便。 LST清单的最后部分为段名表和符 号表,表中分别给出段名,段的大小及有 关属性,以及用户定义的符号名,类型及 属性。
LX.LST 文件的内容
汇编语言程序的上机调试步骤
一、建立汇编语言的工作环境
•需要以下文件:
一、建立汇编语言的工作环境
二、建立ASM文件
二、建立ASM文件
二、建立ASM文件
三、用MASM程序产生OBJ文件
三、用MASM程序产生OBJ文件
汇编程序的输入文件是ASM文件,其输出文件可以有三个: 1、OBJ目标文件
用T命令单步执行程序
用D命令查看数据段的有关区域的内容
用Q命令退出DEBUG返回DOS
七、从DOS返回WINDOWS
汇编语言实验三简单程序的编写与调试
实验三简单程序的编写与调试一&实验目的1.进一步熟悉DEBUG命令;2.熟悉汇编指令的功能及应用;3.掌握简单的汇编语言程序编写与调试。
二&实验环境微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。
三&实验要求1.熟练掌握常用DEBUG命令;2.熟练掌握数据传送指令、比较指令、转移指令和循环指令并能够进行简单程序设计;3.用DEBUG的有关命令调试简单程序。
四&实验内容1、比较AX、BX、CX中带符号数的大小,将最大的数放在AX中。
试编写此程序段。
2、已知存储器中有一个首地址为ARRAY的8个字的数组,现要求数组中的每个数加1(不考虑溢出),试编写完成此功能的程序段。
3、将存储器中从DS:1000H单元开始的10个字节的数据累加求和。
4、使用DEBUG对上述编写的程序进行调试。
五&实验步骤1、比较AX、BX、CX中带符号数的大小,将最大的数放在AX中。
试编写此程序段。
1)程序:cmp ax,bxjge next0xchg ax,bxnext0: cmp ax,cxjge next1xchg ax,cxnext1: …2)使用DEBUG调试:使用r reg命令在ax、bx、cx中预置三个大小不同的数。
使用a命令输入汇编源程序,注意在符号地址输入时,应输入其对应的数值地址。
使用t命令单步执行,再使用r命令可观察到程序全部执行后,ax中内容为最大数。
2、已知存储器中有一个首地址为ARRAY的8个字的数组,现要求数组中的每个数加1(不考虑溢出),试编写完成此功能的程序段。
1)程序:mov cx,8lea bx,arrayrotate: inc word ptr [bx]add bx,2loop rotate2)使用DEBUG调试:使用e命令从某一内存单元开始预置一个8个字的数组。
使用a命令输入汇编源程序,注意在符号地址输入时,应输入其对应的数值地址。
汇编语言程序设计上机步骤与调试方法
汇编语言程序设计上机步骤与调试方法在汇编语言程序设计中,上机步骤与调试方法是非常重要的,它们能够帮助程序员更好地编写和调试程序。
本文将介绍汇编语言程序设计的上机步骤以及常用的调试方法,帮助读者更好地理解和应用这些知识。
一、上机步骤1. 准备工作在开始上机之前,我们需要做一些准备工作。
首先,确认计算机已经连接好必要的硬件设备,例如键盘、显示器等。
其次,确保操作系统和开发环境已经正确安装并能够正常运行。
最后,根据需要准备好所需的汇编语言文档和程序样例。
2. 创建新项目在开始编写汇编语言程序之前,我们需要创建一个新的项目。
在项目中,我们可以组织和管理相关的文件和代码。
通常,我们会选择一个合适的集成开发环境(IDE)来创建和管理项目。
3. 编写程序在创建项目之后,我们可以开始编写汇编语言程序。
首先,我们需要了解目标机器的指令集和寄存器,以便正确地编写程序。
然后,根据需求,我们可以使用不同的指令、寄存器和内存来实现所需的功能。
在编写程序的过程中,注意代码的可读性和易于维护性是非常重要的。
4. 调试程序编写完汇编语言程序后,我们需要进行调试,以确保程序的正确性和稳定性。
调试是一个迭代过程,通常包括以下步骤:- 设置断点:在程序中设置断点,以便在特定位置停止程序的执行。
- 单步执行:通过逐条执行程序的指令,我们可以观察程序的执行过程,并检查各寄存器和内存的值。
- 监视变量:在调试过程中,我们可以监视程序中的变量值,以验证其正确性。
- 查看输出:观察程序的输出结果,与预期结果进行比较,以确定程序是否按照预期执行。
- 修复错误:如果发现程序中存在错误,我们需要对程序进行修改和调整,直到问题解决为止。
5. 运行程序在完成程序的调试之后,我们可以运行程序并观察其运行效果。
在运行过程中,我们可以测试程序的各种功能,以确保其正常工作。
二、调试方法1. 打印输出在调试汇编语言程序时,打印输出是一种常用且简单有效的调试方法。
实验三 汇编语言程序上机操作方法
一 T AX=0233 BX=0000 CX=0011 DX=0038 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B65 ES=0B65 SS=0B75 CS=0B75 IP=000B NV UP EI PL NZ NA PO NC_ 0B75:000B CD21_ INT_____21_ ・ 在_DEBUG_状态下执行程序 一 G 8 Program terminated normally ・ 退出 DEBUG 一 Q_ 2. 比较字符串_bjchx_ 编写一程序,比较两个字符串_string1_和 _string2_所含的字符是否相同,若相同则显示‘Match’ ,否则,显 示‘No_Match’ 。 参考程序如下:(程序名:SY3-2.ASM) D_SEG SEGMENT STRING1 DB '12345' STRING2 DB '1a345' MATCHSTR DB 'MATCH$' NOMATCHSTR DB 'NO MATCH$'
实验注意事项 1.如果使用的是 MASM5.1 的汇编工具,应包括以下文件:MASM 宏汇 编程序文件 LINK 连接程序文件CREF 索引程序文件(也可不用) EDIT 全屏幕文本编辑程序(或其他文字处理系统) 2.能用宏汇编通过的汇编语言源程序与在 DEBUG状态下运行的汇编 语言程序不同,必须是一个完整的程序,有各逻辑段的定义,而在 DEBUG 状态下运行的汇编语言源程序只是其程序段。 3.连接程序 LINK 是把一个或多个独立的目标程序模块装配成一个 可重定位的可执行文件,扩展名为.EXE。 实验与思考 1. 机器语言(Machine Language)、汇编语言(Assembler Language) 和高级语言(High_Level_ Language)的区别? 2.DOS 2 号功能调用和 DOS 9号功能调用的区别? 3.利用 DEBUG 调试程序过程中,应注意什么?
汇编语言上机实验内容
实验一上机操作一、实验目的把握汇编语言程序编辑、汇编、连接、运行和利用DEBUG调试程序的方式。
二、实验设备PC机及相应的软件。
三、实验内容及步骤1、编辑一个指定的汇编语言源程序,并对其进行汇编、连接和运行。
2、利用DEBUG进行程序调试,把握经常使用命令的利用方式,观看运行结果。
3、汇编语言上机操作,见图1-1 汇编语言上机操作流程。
上机操作进程:开始输入cmd 确认后显示:C:\Documents and setting\Administrator>-输入 cd c:\masm 后显示:c:\masm>-c:\masm>EDITc:\masm>MASM ABC;假设有语法错,回EDIT下改该程序c:\masm>LINK ABC;假设有错,回EDIT下改程序c:\masm>ABC假设运行结果错,回EDIT下改程序或在DEBUG下调试,找缘故。
c:\masm>DEBUG手写源程序图 1-1 汇编语言上机操作流程汇编语言程序举例例1:将BL寄放器的内容按二进制形式显示出来。
设:(BL)=01010011B分析:采纳2号功能挪用,别离输出30 31 30 31 30 30 31 31 显示:01010011参考程序:CODE SEGMENTASSUME CS: CODESTART:MOV CX ,8 ;显示字符个数为8MOV BL ,53HNEXT:SHL BL ,1 ;将显示位移至CF中JC ONE ;CF=1?MOV DL ,30H ;CF=0,将0的ASCII放在DL中JMP EXITONE:MOV DL ,31H ;CF=1,将1的ASCII放在DL中EXIT:MOV AH ,2INT 21H ;挪用DOS功能显示DEC CX ;循环次数减1JNZ NEXT ;判定是不是终止MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START上机操作:c:\masm>EDIT ;编辑源程序c:\masm>MASM ShowBL ;汇编成Microsoft (R) Macro Assembler VersionCopyright (C) Microsoft Corp 1981,1988. All rights reserved.48912 + 447243 Bytes symbol space free0 Warning Errors0 Severe Errorsc:\masm>LINK ShowBL ;连接成Microsoft (R) Overlay Linker VersionCopyright (C) Microsoft Corp 1983-1987. All rights reserved.LINK : warning L4021: no stack segmentc:\masm>ShowBL ;装载并执行01010011 ;屏幕显示c:\masm>-在DEBUG下查看的装入情形:c:\masm>DEBUG- R ;查看当前寄放器内容AX=0000 BX=0000 CX=001B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=0B51 ES=0B51 SS=0B61 CS=0B61 IP=0000 NV UP EI PL NZ NA PO NC B353 MOV BL,53- U CS:0 ;查看程序0B61:0000 B353 MOV BL,530B61:0002 B90800 MOV CX,00080B61:0005 D0E3 SHL BL,10B61:0007 7205 JB 000E…….0B61:0017 B44C MOV AH,4C0B61:0019 CD21 INT 21…….-G ;执行程序01010011Program terminated normally-例2:将某段中的字符串“Hello!”传送到另一段中。
汇编语言程序设计实验3多个段的汇编源程序编写与调试
汇编语⾔程序设计实验3多个段的汇编源程序编写与调试汇编语⾔程序设计实验3 多个段的汇编源程序编写与调试⼀、实验⽬的1. 理解和掌握将数据、代码、栈放⼊不同逻辑段的程序的编写和调试2. 理解具有多个段的汇编源程序对应的⽬标程序执⾏时,内存分配⽅式3. 掌握⼤⼩写字符的转换⽅法、数字字符和数值之间的转换⽅法4. 理解并掌握各种寻址⽅式的灵活应⽤5. 掌握汇编指令loop, and, or,div, mul的⽤法⼆、实验内容及结果(⼀)实验任务⼀使⽤任意⼀款⽂本编辑器,编写8086汇编源程序task1.asm。
源代码如下:assume cs:code, ds:datadata segmentdb 'Nuist'db 5 dup(2)data endscode segmentstart:mov ax, datamov ds, axmov ax, 0b800Hmov es, axmov cx, 5mov si, 0mov di, 0f00hs: mov al, [si]and al, 0dfhmov es:[di], almov al, [5+si]mov es:[di+1], alinc siadd di, 2loop smov ah, 4chint 21hcode endsend start阅读源程序,从理论上分析源代码的功能,尤其是line15-25,循环实现的功能是什么,逐⾏理解每条指令的功能。
使⽤masm、link对task1.asm进⾏汇编、链接,得到可执⾏⽂件task1.exe,运⾏并观察结果。
使⽤debug⼯具对程序进⾏调试,执⾏到程序返回前,即line27之前,观察结果。
修改line4⾥5个字节单元的值,重新汇编、链接、运⾏,观察结果。
1、具体的汇编、链接过程可以参考《汇编语⾔程序设计实验2 汇编源程序编写与汇编、调试》。
运⾏ex1.exe⽂件,得到结果:2、使⽤debug⼯具对程序进⾏调试⾸先使⽤r命令查看寄存器中的值,再使⽤g命令执⾏到程序返回前,即line27之前,结果如下所⽰:3、修改line4⾥5个字节单元的值:db 5 dup(2)--> 改成:db 2,3,4,5,6重新汇编、链接、运⾏,结果如下所⽰:从这⾥已经可以看出data段line4的字节数据的⽤途是决定ASCII码字符的颜⾊属性。
- 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,行不行?。