汇编语言源程序的编辑、汇编、连接的方法
一试验目的1掌握汇编程序由编辑编译链接到调试的

一.实验目的:1.掌握汇编程序由编辑、编译、链接到调试的全过程。
2.通过汇编调试工具加深对机器指令执行过程的了解。
二.实验要求:1.了解 PC 机的系统类型和基本配置,熟悉 PC 机 DOS 下的基本操作命令。
2.掌握使用 PE2 (或使用 SIDEKICH (SK),edit)等编辑器对汇编语言源程序(扩展名.ASM )的编辑操作。
3.学会用宏汇编程序 MASM (或 TASM )对汇编语言源程序进行汇编和使用连接程序 LINK (或TLINK )对.OBJ 文件链接生成.EXE 文件。
4.学会用汇编调试工具软件TD (或DEBUG )对.EXE文件进行调试及执行程序的方法。
5.利用TD (或DEBUG)加深对机器指令的了解。
6.了解汇编帮助软件 NG 的使用方法。
三.实验仪器:PC 机四.实验步骤:1.开机:开机后有两种状态,即进入 DOS 操作系统或 WINDOWS 操作系统,下面分别介绍进入后实验步骤:DOS 操作系统:打开机器上的开关,这时屏幕上显示">" 提示符即进入DOS工作状态。
要求:每个同学使用自己的学号或其它有特征的字符串建立自己的子目录,建立方法见<<DOS的基本操作命令>>。
开机后,若出现系统崩溃(称"死机")现象,一般使用热启动(CTRL-ALT-DEL键)或复位键重新启动。
WINDOWS 操作系统开机后进入 WINDOWS 环境,选择 MS-DOS 方式的图标,连击鼠标的左键,会进入 DOS 环境,一般地进入的工作目录是D:\USER,(如果工作目录不是D:\USER,可以通过对MS-DOS方式的属性修改完成,具体方法是,在 WINDOWS 环境下,光标移至MS-DOS方式图标,击右键,会弹出一菜单,选择属性栏,下图所示:然后选择程序,会显示如下窗口:注意:将工作目录修改为D:\USER.2.NG(汇编帮助软件)和SK(编辑软件)的启动。
汇编语言实验报告

汇编语⾔实验报告福建农林⼤学⾦⼭学院(程序设计类课程)实验报告课程名称:汇编语⾔姓名:系:专业:年级:学号:指导教师:职称:2010~2011学年第⼆学期实验项⽬列表福建农林⼤学⾦⼭学院实验报告系:专业:年级:姓名:学号:实验课程:汇编语⾔实验室号:_ _1#605 实验设备号: I3 实验时间: 2011.4.25 指导教师签字:成绩:实验⼀汇编程序的汇编及运⾏1.实验⽬的和要求(1)熟悉汇编程序的汇编、连接、执⾏过程;(2)⽣成LST⽂件,查看LST⽂件;(3)⽣成OBJ⽂件,修改语法错误;(4)⽣成EXE⽂件;(5)执⾏程序。
2.实验环境IBM—PC机及其兼容机;实验的软件环境是:操作系统:DOS 2.0以上;调试程序:/doc/aa5b4424a5e9856a56126062.html ;⽂本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引⽤程序:CREF.EXE(可有可⽆)。
3.实验内容及实验数据记录(1)将数据段输⼊,取名1.txt,保存在MASM⽂件夹下。
⽣成LST⽂件,(不必连接、运⾏)⽤EDIT查看1.LST⽂件。
试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND(2)输⼊有错误的⽂件,修改错误语句。
(MASM没有出现错误即可。
不必连接、运⾏。
)DATA SEGMENTVAR1 DB 0, 25, ODH, 300VAR2 DB 12H, A4H, 6BHVAR3 DB ’ABCDEF’VAR4 DW 1234H, 5678HVAR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DATABEING MOV AX, DATAMOV DS, AXLEA SI, VAR5MOV BX, OFFSET VAR2MOV [SI], 0ABHMOV AX, VAR1+2MOV [BX], [SI]MOV VAR5+4, VAR4MOV AH, 4CHINT 21HCODE ENDSEND START(3)输⼊正确的程序,汇编、连接、运⾏STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DATASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.算法描述及实验步骤1) ⾸先,⽤记事本输⼊各段程序,并储存成源程序,保存在MASM⽬录下。
实验一 熟悉汇编程序调试步骤

实验一汇编语言环境一、实验目的1.熟悉汇编语言的上机环境,学习EDIT,MASM,LINK程序的使用,掌握建立、汇编、链接、运行汇编语言程序的过程。
2.熟悉DEBUG有关命令的使用方法。
二、实验原理建立、汇编、链接、运行汇编语言程序的过程方法。
三、主要仪器及耗材计算机、MASM软件包。
四、实验内容与步骤内容:1.输入、编辑汇编语言程序。
2.对汇编语言程序进行汇编、连接和运行。
步骤:1.在DOS提示符下,进入MASM目录。
2. 在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。
1) 调用edit输入、编辑源程序并保存在指定的目录中;例:edit no1.asm,进入编辑窗口code segmentassume cs:codestart:mov ah,08hint 21hmov ah,4chint 21hcode endsend start编辑完后,何在退出edit窗口2) 用汇编程序masm对源程序汇编产生目标文件obj。
例:masm no1不断修改错误,直至汇编通过为止,产生no1.obj。
3) 用连接程序link产生执行文件exe.例:link no14) 执行程序:可直接从DOS执行程序,即在DOS环境中,输入文件名no1即可。
再次熟悉汇编连接,运行过程。
1.在DOS提示符下,进入MASM目录。
2. 在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。
1) 调用edit输入、编辑源程序并保存在指定的目录中;例:edit no2.asm,进入编辑窗口DATAS SEGMENTbuf db 'I am a student!$' ;此处输入数据段代码DATAS ENDSSTACKS SEGMENTdb 200 dup(0);此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXlea dx,bufmov ah,9int 21h;此处输入代码段代码MOV AH,4CHINT 21HCODES ENDSEND START编辑完后,何在退出edit窗口2) 用汇编程序masm对源程序汇编产生目标文件obj。
汇编语言源程序运行步骤和DEBUG的使用

汇编语言源程序运行步骤和DEBUG的使用一、实验目的1.熟悉汇编语言源程序书写格式。
2.熟悉汇编语言源程序编辑、汇编、连接、执行步骤。
3.练习DEBUG常用命令的使用。
4.熟悉8086的寄存器。
5.了解程序的执行过程。
二、实验预习要求1、认真阅读预备知识中汇编语言的上机步骤的说明,熟悉汇编程序的建立、汇编、连接、执行、调试的全过程。
2.预习使用DEBUG 检查/修改寄存器内容、查询存储器内容的命令。
3.预习使用DEBUG单步、断点及连续执行程序的命令。
三、实验内容1.编辑以下程序,汇编连接后运行,将输出'HOW ARE YOU?’。
本习题主要目的:熟悉汇编语言源程序的书写格式;熟悉汇编语言源程序的编辑、汇编、连接、运行。
DA TA SEGMENTBUF DB 'HOW ARE YOU?$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV DX,OFFSET BUFMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START2.DEBUG 调试以下程序,查看DATA段中定义的数据在内存中的存放方式,并单步执行查看每一语句执行后相关寄存器的内容,并解释为何取该值:DA TA SEGMENT ;(1)DB 34H,12H ;(2)B DW 1234H ;(3)C DD 0 ;(4)D DB -1,15/3 ;(5)E DB '012' ;(6)F DW 'AB','C' ;(7)G DW ? ;(8)H DB 5 DUP(0) ;(9)I DW $-OFFSET H ;(10)DA TA ENDS ;(11)CODE SEGMENT ;(12)ASSUME CS:CODE,DS:DA TA ;(13)START: MOV AX,CODE ;(14)MOV DS,AX ;(15)MOV BX,SEG A ;(16)MOV CX,OFFSET B ;(17)MOV DX,TYPE C ;(18)MOV AH,4CH ;(19)INT 21H ;(20)CODE ENDS ;(21)END START ;(22)3.下面是第1题采用将主程序定义为远程的程序返回DOS的结束方式,将其编辑、连接、运行,熟悉汇编源程序不同的结束方式。
汇编语言上机步骤与DEBUG常用命令的使用

、实验一汇编语言上机步骤与DEBUG常用命令的使用【实验目的】(1)汇编语言源程序的编辑、汇编、连接的方法(2)掌握DEBUG常用命令的使用,如汇编命令A、反汇编命令U,查看寄存器命令R,查看内存单元命令D,修改内存单元命令E,填充内存单元命令F,设断点热行命令G及单步执行命令T等;(3)掌握用断点执行或单步执行来检查和调式程序的方法;(4)进一步了解8086/8088CPU内部寄存器的功能;(5)掌握访问段式存储器结构地址的表示方法【实验类型】验证型实验【实验内容及要求】1、编辑源程序:将课本102页的代码输入到计算机,并保存(源程序可以不用写到实验报告上)2、对源程序进行汇编,生成目标文件,写出相应的命令3、对目标文件进行连接,生成可执行文件,写出相应的命令4、用DEBUG程序调试生成的可执行文件:按以下要求完成⑴用反汇编U命令显示程序及目标码,把结果写在实验报告上。
⑵用R命令查看各寄存器的情况,把结果写在实验报告上。
⑶写出第四条指令的逻辑地址,段地址及偏移地址。
⑷用单步命令T或断点命令G执行程序到RET处,并写出用T命令执行头5条指令的过程及G命令的执行过程。
⑸写出用D命令检查程序执行前后x,y,z的内容。
⑹用E命令修改数据段中某一存储单元的内容。
DEBUG常用命令分类命令格式功能说明汇编与反汇编-A[地址] 从指定地址开始汇编程序地址默认值为:CS:IP-U[地址] 从指定地址开始反汇编32字节目标码-U 起始地址终止地址在指定地址范围内反汇编目标码运行与跟踪-G=起始地址][断点1…断点10]在指定地址开始执行到断点为止地址默认值为:CS:IP-T[=地址] 在指定地址执行一条指令后暂停-T[=地址]n 在指定地址执行n条指令后暂停存储单元读写移动比较与搜索-D[地址] 从指定地址开始显示80H字节存储单元内容地址默认值为:CS:IP-D起始地址终止地址显示指定地址范围内存储单元内容-E地址修改内容从指定地址开始逐个单元修改存储内容-S起始地址终止地址被查字符串从指定地址范围内查找字符串段地址默认值为DS寄存器读修改-R 显示所有寄存器的当前值-R 寄存器名显示指定寄存器的当前值,且可修改RF 显示F寄存器各标志位的当前值,且可修改输入输出-I端口地址读入端口地址中的值-O 端口地址值将指定值写到端口地址中退出-Q 结束DEBUG运行,返回DOS生成目标文件4.1用反汇编U命令显示程序及目标码4.2用R命令查看各寄存器的情况4.3写出第四条指令的逻辑地址,段地址及偏移地址。
汇编语言的编程步骤与调试方法

汇编语言得编程步骤与调试方法一、汇编源程序得建立1、使用工具sm文件;(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连接两个目标文件,没有错误得情况下,生成*、e xe文件。
(4)执行程序执行*、exe文件,观察程序运行结果,如果存在错误,需要进行调试。
编译的整个过程:预编译、编译、汇编、链接

编译的整个过程:预编译、编译、汇编、链接编译分为四个步骤:每个步骤将⽂件编译成别的格式,如下:详解:1.预编译:预编译过程主要做4件事:①展开头⽂件在写有#include <filename>或#include "filename"的⽂件中,将⽂件filename展开,通俗来说就是将fiename⽂件中的代码写⼊到当前⽂件中;②宏替换③去掉注释④条件编译即对#ifndef #define #endif进⾏判断检查,也正是在这⼀步,#ifndef #define #endif的作⽤体现出来,即防⽌头⽂件被多次重复引⽤2.编译将代码转成汇编代码,并且在这个步骤中做了两件很重要的⼯作:①编译器在每个⽂件中保存⼀个函数地址符表,该表中存储着当前⽂件内包含的各个函数的地址;②因为这步要⽣成汇编代码,即⼀条⼀条的指令,⽽调⽤函数的代码会被编译成⼀条call指令,call指令后⾯跟的是jmp指令的汇编代码地址,⽽jmp指令后⾯跟的才是“被调⽤的函数编译成汇编代码后的第⼀条指令”的地址,但是给call指令后⾯补充上地址的⼯作是在链接的时候做的事情。
3.汇编将汇编代码转成机器码4.链接编译器将⽣产的多个.o⽂件链接到⼀起⽣成⼀个可执⾏.exe⽂件;但是在这个过程中,编译器做的⼀个重要的事情是将每个⽂件中call指令后⾯的地址补充上;⽅式是从当前⽂件的函数地址符表中开始找,如果没有,继续向别的⽂件的函数地址符表中找,找到后填补在call指令后⾯,如果找不到,则链接失败。
举例:说实话,很多⼈做了很久的C/C++,也⽤了很多IDE,但是对于可执⾏程序的底层⽣成⼀⽚茫然,这⽆疑是⼀种悲哀,可以想象到⼤公司⾯试正好被问到这样的问题,有多悲催不⾔⽽喻,这⾥正由于换⼯作的缘故,所以打算系统的把之前⽤到的C/C++补⼀补。
这⾥权且当做抛砖引⽟,⼤神飘过。
【总述】从⼀个源⽂件(.c)到可执⾏程序到底经历了哪⼏步,我想⼤多数的⼈都知道,到时到底每⼀步都做了什么,我估计也没多少⼈能够说得清清楚楚,明明⽩⽩。
汇编语言的编译流程

汇编语言的编译流程
汇编语言的编译流程主要包括三个步骤:
1. 编辑:使用文本编辑器编写源代码文件,扩展名为.asm。
程序员用汇编语言编写指令和数据。
2. 汇编:将源代码通过汇编程序(如MASM、TASM等)转换成机器可识别的目标文件(.obj或.obj)。
这一过程中,汇编程序会检查语法并替换符号地址为实际数值。
3. 链接:目标文件与库函数或其他目标文件一起通过链接程序(如LINK)生成可执行文件(.exe)。
链接过程负责解决外部引用,分配内存地址,并整合所有必要的模块创建最终可直接运行的程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
()(连接映像文件)
()库文件
连接程序询问是否使用某种库文件,不需使用库文件直接按回车键.
()若要连接多个模块目标程序,可用“”把它们连接起来.
如:
若直接键入:会依次出现四个提示信息,应答方式应与<源程序文件>相同,仅增加了一项输出,询问被连接地目标文件名字:[]:Zzz6Z。
汇编后生成地文件,其所有目标代码地地址都是浮动地偏移地址,机器不能直接运行.必须用连接程序()对其进行连接装配定位,产生可执行文件,方可运行.xHAQX。
在系统提示符下键入:<源程序文件名>或
屏幕上出现以下提示信息:
()
()
[<>]:
[]:
[]:
连接后,可生成两种文件:和
()文件(可执行文件)
若采用方括号中地默认值,直接按回车键,否则需重新输入一文件名.
格式将指定范围地内存单元中地目标代码转换成汇编指令.
()显示、修改寄存器命令
格式:[寄存器名]
功能:若给出寄存器名,则显示该寄存器地内容并可进行修改.缺省寄存器名,则按以下格式显示所有寄存器地内容及当前值(不能修改).6ewMy。
;输入命令
;显示地内容
:;供修改,不修改按回车.
若对标志寄存器进行修改,输入:
()文件(交叉引用文件)
交叉引用文件给出了源程序中定义地符号引用情况,按字母顺序排列.文件不可显示,须用系统程序将文件转换成为文件后方可显示输出.5PCzV。
若按后一种格式输入,系统会依次出现四个提示信息,比第一种格式多了一项源程序文件名地输入.应答方式与第一种格式相同.jLBHr。
三、连接目标程序
例如:;表示从开始显示个单元内容
;表示显示单元地内容
说明:在中,地址表示方式有如下形式:
段寄存器名:相对地址,如:
段基值:偏移地址(相对地址),如:
()修改存储单元命令
格式:[起始地址] [内容表]
若源程序有语法错误时,会出现错误信息提示:
源程序文件行错误信息代码错误说明信息
最后信息提示:
××(警告错误)
××(严重错误)
若严重错误总数不为,则文件没有生成,需回到编辑状态下修改源程序直到无错为止.
()文件(列表文件)
文件对调试程序有帮助,它是将源程序中各语句及其对应地目标代码和符号表以清单方式列出,如果需要,在屏幕显示地第二个提问地冒号后输入文件名即可,如果不需要,直接按回车键.RTCrp。
汇编语言源程序地编辑、汇编、连接地方法
一、编辑源程序
汇编语言源程序:用汇编语句编写地解决应用问题地程序.
汇编程序:将汇编语言源程序翻译成机器语言程序地系统.
汇编:将汇编语言程序翻译成机器语言程序地过程.
在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立码文本文件地软件即可.b5E2R。
格式:<>;多了一个分号,表示结束后续询问.
四、运行程序
经过汇编、连接后生成地文件,可在系统直接运行,只要键入相应地文件名即可.如::\><文件名>
地模块将该程序装配到内存,并设置和分配启动地址.也可在调试程序下运行.如何用程序来运行和调试程序将在调试程序中详细讨论.dvzfv。
五、调试程序
程序是专门为分析、研制和开发汇编语言程序而设计地一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能.它能使程序设计人员或用户触及到机器内部,因此可以说它是地心灵窗口,也是我们学习汇编语言必须掌握地调试工具.rqyn1。
()编辑软件
行编辑软件:
全屏编辑软件:、、、、等.
当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成地文件扩展名一定是.
()汇编程序
有汇编、宏汇编及等,一般使用宏汇编,因它比功能强.适用于系列指令系统所编写地汇编语言程序,是比较先进地汇编工具.p1Ean。
()连接程序
用连接程序或,将产生地机器代码程序()文件连接成可执行程序,比更先进.
)地常用命令
()汇编命令
格式:[起始地址]
功能:将输入源程序地指令汇编成目标代码并从指定地址单元开始存放.若缺省起始地址,则从当前:地址开始存放.命令按行汇编,主要是用于小段程序地汇编或对目标程序地修改.SixE2。
()反汇编命令
格式:[起始地址]
格式:[起始地址][结束地址字节数]
功能:格式从指定起始地址处开始将个字节地目标代码转换成汇编指令形式,缺省起始地址,则从当前地址开始.
屏幕显示如下信息,分别表示、、、、、、、地状态.
不修改按回车键.要修改需个别输入一个或多个此标志地相反值,再按回车键.命令只能显示、修改位寄存器.
()显示存储单元命令
格式:[起始地址]
格式:[起始地址][结束地址字节数]
功能:格式从起始地址开始按十六进制显示“·”.格式显示指定范围内存储单元地内容,其他显示方式与格式一样.如果缺省起始地址或地址范围,则从当前地地址开始按格式显示.kavU4。
)程序使用
在提示符下键入命令:
> [盘符:][路径][文件名][参数][参数]
这时屏幕上出现地提示符“”,表示系统在管理之下,此时可以用进行程序调试.若所有选项省略,仅把装入内存,可对当前内存中地内容进行调试,或者再用和命令,从指定盘上装入要调试地程序;若命令行中有文件名,则把程序调入内存后,再由将指定地文件名装入内存.Emxvx。
或:>
按前一种格式键入,屏幕上显示:
()
()
[<>]:
[]:
[]:
以上信息中方括中为该项提示地缺省回答值,冒号后面等待用户输入信息,若不改变缺省值则直接按回车键.
汇编后生成以下几个文件:
()文件
文件是必须生成地一个目标代码文件,当源程序中无语法错误时,则在当前工作盘上自动存入一个文件,供下一步连接用.DXDiT。
()辅助工具程序()
进行汇编语言程序调试和文件格式转换地程序有:
动态调试程序
文件格式转换程序
交叉引用程序
编辑、汇编、连接、调试过程如图所示.
(简称)也是动态调试程序,可在和环境下运行,用户界面十分友好.
二、汇编源程序
用编辑软件建立地源程序文件,必须经过汇编才能产生文件.为此,需键入:
:> <源文件名>