汇编语言源程序的编辑、汇编、连接的方法
一试验目的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)。
链接过程负责解决外部引用,分配内存地址,并整合所有必要的模块创建最终可直接运行的程序。
汇编语言及编程实例(电子教案)
汇编语言及编程实例(电子教案)汇编语言程序设计2005第四章汇编语言程序设计回顾:8086的内部结构、寄存器功能和工作过程,指令格式、寻址方式和功能。
本讲重点:了解汇编的概念及其方法,掌握汇编程序的基本格式,常用运算符的使用方法,汇编的步骤。
4.1汇编语言的基本元素一、汇编语言的语句格式由汇编语言编写的源程序是由许多语句(也可称为汇编指令)组成的。
每个语句由1~4个部分组成,其格式是:[标号]指令助记符[操作数][;注解]其中用方括号括起来的部分,可以有也可以没有。
每部分之间用空格(至少一个)分开,一行最多可有132个字符。
1.标识符给指令或某一存储单元地址所起的名字。
可由下列字符组成:字母:A~z;数字:0~9;特殊字符:、·、@、一、$数字不能作标识符的第一个字符,而圆点仅能用作第一个字符。
标识符最长为31个字符。
当标识符后跟冒号时,表示是标号。
它代表该行指令的起始地址;当标识符后不带冒号时,表示变量;伪指令前的标识符不加冒号。
2.指令助记符表示不同操作的指令,可以是8086的指令助记符,也可以是伪指令。
3.操作数指令执行的对象。
依指令的要求,可能有一个、两个或者没有,例如:RET;无操作数COUNT:INCC某;一个操作数如果是伪指令,则可能有多个操作数,例如:COSTDB3,4,5,6,7;5个操作数MOVA某,[BP+4];第二个操作数为表达式4.注解该项可有可无,是为源程序所加的注解,用于提高程序的可读性。
二、汇编语言的运算符1.算术运算符、逻辑运算符和关系运算符-1-汇编语言程序设计2005算术运算符可以应用于数字操作数,结果也是数字。
而应用于存储器操作数时,只有+、-运算符有意义。
2.取值运算符SEG、OFFSET、TYPE、SIZE和LENGTH·SEG和OFFSET分别给出一个变量或标号的段地址和偏移量。
例如,定义:SLOTDW25则:MOVA某,SLOT;从SLOT地址中取一个字送入A某MOVA某,SEGSLOT;将SLOT所在段的段地址送入A某MOVA某,OFFSETSLOT;将SLOT所在段的段内偏移地址送A某·TYPE操作符返回一个表示存储器操作数类型的数值。
第4章汇编语言程序设计知识
图4-1 分支程序结构
例4-1
JMP_128:MOV RL MOV JMP JMPTAB:AJMP AJMP ┇ AJMP A,R3 A DPTR,#JMPTAB @A+DPTR ROUT00 ROUT01 ┇ ROUT7F
128个子程序首址
二、分支程序
说明:此程序要求128个转移目的地址(ROUT00 ~
三、反汇编
将二进制机器语言程序翻译成汇编语言程序的过程 称反汇编。
汇编和反汇编的过程如图4-3所示。
汇编(汇编程序)
源程序 (汇编语言)
反汇编(汇编程序)
目标码 (机器语言)
图4-3 汇编和反汇编过程
§4.2.3 伪指令
伪指令不是真正的指令,无对应的机器码,在汇编 时不产生目标程序,只是用来对汇编过程进行某种 控制。
格式:字符名称
DATA
表达式
功能:与EQU类似,但有以下差别:
1、EQU定义的字符名必须先定义后使用,而DATA定义的 字符名可以后定义先使用。
ORG START
2000H MOV R0,#21H ;21H→(R0) MOV A,20H ; (20H)→(A) ANL A,#0FH ;A^#0FH→(A),取低位 MOV @R0,A ; (A)→((R0))),低 位置 21H 中 INC R0 ;R0+1→(R0) MOV A,20H ; (20H)→(A) SWAP A, ;A0~3-((A4~7),低位 与高位交换 ANL A,#0FH ;A^#0FH,取高位 MOV @R0,A ; (A)→((R0)),高位 置 22H
序执行程序。
分支程序又分为单分支和多分支结构。 多分支程序是首先把分支程序按序号排列,然后按序号值进 行转移。
微机原理汇编语言的上机过程 实验报告
微机原理技术与接口实验报告学院:专业:班级:姓名:学号:汇编语言程序的上机过程实验目的通过简单地操作了解汇编语言程序的基本内容,体会汇编语言的运行,为以后的实验打下一定的基础。
实验原理及操作步骤一、上机环境❖要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。
▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。
▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。
▪调试程序:DEBUG.EXE,用于调试可执行程序。
二、上机过程❖汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。
1.编辑源程序❖用文本编辑软件创建、编辑汇编源程序。
常用编辑工具有:、记事本、Word等。
❖无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。
2.汇编❖用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。
❖汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件;展开宏指令。
❖汇编过程如下:❖在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。
❖此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。
Object Filename [MYFILE.OBJ]:Source Listing [Nul.LST]:Cross Reference [Nul.CRF]:依次按回车键,进行选择后,汇编程序就对汇编源程序进行汇编。
如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。
此时,需要进行修改,然后再进行汇编。
❖如此进行,直至汇编无错误,得到目标文件为止。
3.连接❖汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。
单片机汇编语言程序设计
6.定义空间指令DS
指令格式:
地址
ROM
[标号:]DS <表达式>
2000H
说明:DS伪指令是定义存储区,即从标
2001H 号指定的单元开始保留表达式所代表的
存储单元数。
2002H
【例】
2003H
ORG 2000H
单片机汇编语言程序设计
单片机汇编语言程序设计
1.1 源程序的编辑与汇编
1.源程序的编辑 源程序的编写要依据80C51汇编语言的基本规则,特别要用好常用
的汇编命令(即伪指令),例如: ORG 0040H MOV A,#7FH MOV R1,#44H END
这里的ORG和END是两条伪指令,其作用是告诉汇编程序此汇编源程 序的起止位置。编辑好的源程序应以.ASM扩展名存盘,以备汇编程序调 用。
这里使用的“字符名称”不是标号,不能用“:”来隔分隔符;其 中的“项”可以是一个数值,也可以是一个已经有定义的名字或可以求 值的表达式。该指令的功能是将一个数或特定的汇编符号赋予规定的字 符名称。用EQU指令赋值的字符名称可以用做数据地址、代码地址、位 地址或直接当做一个立即数使用。因此,给字符名称所赋的值可以是8 位二进制数,也可以是16位二进制数。
置循环初值
置循环初值
循环体
N 循环条件? Y
循环条件? Y
N 循环体
(a)先处理后判断方式
(b)先判断后处理方式
4.子程序结构 在汇编语言程序设计时,通过循环程序可以解决连续重复执行同
一程序段的问题,而对于不连续重复执行同一程序段的问题,为避免 重复编制程序,节省程序代码所占的存储空间,可将其编制成独立的 程序即子程序,在需要的位置采用特定的指令调用该子程序,执行后 再返回到调用位置继续执行后序程序指令。子程序调用是实现I/O操 作的重要方法。
汇编语言的编程步骤与调试方法
汇编语言的编程步骤与调试方法一、汇编源程序的建立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 文件。
(4)执行程序执行*.exe文件,观察程序运行结果,如果存在错误,需要进行调试。
第4章 汇编语言程序设计
例: 三字节无符号数相加,其中被加数在内部RAM 的50H、51H和52H 单元中;加数在内部RAM的53H、 54H和55H单元中;要求把相加之和存放在50H、 51H和52H单元中,进位存放在位寻址区的00H位中。
内部RAM
50H 51H 52H
高字节 低字节
53H 54H 55H
R1→55H
结 束
常用程序结构:
顺序程序、分支程序、循环程序。
4-3
顺序程序
顺序程序又称简单程序,程序走向只有一条路径。 例:双字节求补程序(设数据在R4R5中): 开 始 CLR C MOV A,R5 ;取低字节 处 理 CPL A ADD A,#01H ;低字节变补 处 理 MOV R5,A MOV A, R4 ;取高字节 处 理 CPL A ADDC A,#00H ;高字节变补 结 束 MOV R4,A
片内 RAM 42H 0 十 41H 0 个 40H 十 个
4 -- 4
分支程序(参见书P49-57)
分支程序就是在程序执行过程中要判 断某些条件,当条件成立后程序转移到不 同的功能处运行。在MCS-51单片机中条件 转移指令都可以用在分支程序中。 (复习、参见书P38---39) (1)测试条件符合转移,如: JZ、JNB …等
汇编的主要任务:
1)确定程序中每条汇编语言指令的指令机器码。 2)确定每条指令在存储器中的存放地址。 3)提供错误信息。 4)提供目标执行文件(*.OBJ/*.HEX)和 列表文件(*.LST)。
一、汇编语言指令类型:
1. 机器指令: 指令系统中的全部指令,每条指令有对应的机器代码。 2. 伪指令: 汇编控制指令,仅提供汇编信息,没有指令代码。
在源程序中只能有一条END指令
《汇编语言程序设计》
解法1
解法2
MOV AX, WORD PTR FIRST XCHG AX, WORD PTR SECOND MOV WORD PTR FIRST, AX
解法3
错误的代码 MOV AL, FIRST
MOV BL, SECOND
XCHG AL, BL MOV AL, FIRST+1 MOV BL, SECOND+1 XCHG AL, BL MOV MOV MOV MOV MOV MOV AH, FIRST FIRST, SECOND SECOND, AH AH, FIRST+1 FIRST+1, SECOND+1 SECOND+1, AH
66H
01H
CAH 01H
AX=6601H
(2)采用堆栈指令编写 PUSH WORD PTR FIRST PUSH WORD PTR SECOND POP WORD PTR FIRST POP WORD PTR SECOND
第1条指令执行后 第2条指令执行后 第3条指令执行后 第4条指令执行后
56H 78H 12H
12H
34H
34H
12H 34H
实验二:用户登录验证程序
时间:周四 地点:1416 类型:设计
• 一、实验目的: 学习掌握汇编语言的开发过程,汇编源程序的编程格式和基本结构, DOS/BIOS功能调用,掌握分支、循环、子程序等基本结构程序的设计方 法。 • 二、实验内容 用汇编语言程序设计方法,设计一个用户登陆验证程序。 • 三、实验要求 1. 程序执行后,给出操作提示,请用户键入用户名和密码。 2. 用户在键入密码时,程序不回显键入字符。 3. 只有当用户键入的用户和密码字符串和程序内定的字符串相同时,显 示欢迎界面,并返回DOS。 • 四、实验报告要求 实验报告的内容:实验名称、实验目的、实验内容、实验程序、实验结 果分析、实验过程遇到的问题及体会。 实验报告以文本形式递交,要求书写规范、文字简练、语句通顺、图表 清晰。
汇编语言源程序的运行过程
..汇编语言源程序的运行过程一、概述二、具体操作过程1.编辑过程在计算机“附件”的“记事本”中,用word 编辑汇编语言源程序,比用编辑程序EDLIN 要方便得多。
因为使用后者,必须熟记它的各种命令及其功能。
使用前者的操作步骤如下:第一步:编辑并建立扩展名为ams 的文件开始→程序→附件→记事本→键入汇编语言源程序(也可用Ctrl+C 及Ctrl+V 拷贝已有程序)→文件→另存为→出现“另存为”窗口→在‘文件名:’处为该文件命名,并切记:将扩展名由.txt 改为.asm →在“另存为”窗口里的“我的电脑”中找到含有MASM.EXE 、LINK.EXE 以及DEBUG.EXE 这三个工具的文件夹(如,8086experi ),并双击之→该文件夹名便出现在“保存在:”处→保存(至此,该文件夹中将出现你所编辑的扩展名为asm 的汇编语言源程序。
此时的源程序以ASCII 码形式存盘,而非机器码)→关闭记事本。
注意:上述三个工具及用户程序必须在同一文件夹中。
此后,为显示,打印或修改该程序,双击该程序的图标即可。
第二步:在DOS 下运行EDLIN ,以便查找并排除源程序中可能存在的语法错误。
window 状态→开始→运行→打开:cmd ↙→确定→出现DOS 提示符:C:\……>→指定存有你的程序的文件夹所在盘(如D 盘)为当前盘 D: ↙→D:\>cd 文件夹名↙→在DOS 管理下键入源程序编辑程序 无语法错误的汇编语言调试过程D:\文件夹名>edlin 文件名.asm ↙End of input file* E ↙按结束编辑命令E 之前,生成了一个扩展名为$$$的文件;结束编辑状态之后,该文件的扩展名由$$$变为BAK 。
特别指出:即使不用EDLIN 进行编辑,也必须进行此步。
否则,若源程序中存在语法错误,下一步进行汇编后,不予提示,也不生成机器码文件,无法进行再下一步的连接,致使程序无法运行。
微机原理及运用第4章
关系运算的操作数也必须为数字操作数。当关系成立时, 其结果为全 1;当关系不成立时,其结果为全 0。 汇编语言中的表达式不能构成单独语句, 只能是语句的 一个部分, 例如: MOVAX, BUF+2
ADDAL, VAL AND 0FH
JMPAGAIN+3 MOVBL, VB LE VA
4.1汇编语言基本概念
4.1.1汇编语言与机器语言
我们已经学过高级语言,例如BASIC语言或FORTRAN 语言,无论哪种语言,它都规定了一系列用于编写程序的语 句和应该遵循的语法规则。人们根据一种语言给定的语句及 其语法规则就可以写出程序,计算机则通过执行已编好的程 序来完成人们要求它完成的各种复杂功能。汇编语言也一样, 根据汇编语言的语句及其语法规则可以写出汇编语言程序。 但汇编语言与高级语言有较大的区别,汇编语言中的语句与 机器的种类和型号密切相关。
部分, 汇编时不形成任何目标码。注释必须以分号“;”开 头。 它可以作为语句的一个部分,也可以作为一个单独的语 句。
4.1.3汇编语言中的常数与表达式
1. 常数 常数可以分数值常数和字符串常数两类。数值常数按其 基数的不同,可以有二进制数、八进制数、十进制数、十六 进制数等几种不同的表示形式, 汇编语言中采用不同的后缀 加以区分。 B: 表示二进制数。 例如, 10110011B。
表示一条指令的这些字符常称为助记符。 我们必须指出, 采用助记符写出的程序,机器是不能直接执行的,因为上面 我们已经指出, 处理器在设计时是按二进制指令码考虑的。 所以,采用汇编语言编写的程序在执行前还必须将其“翻译” 成机器语言。通常将采用助记符指令写成的程序,称为源程 序,将它翻译成的机器语言程序称为目标程序。将汇编语言 的源程序翻译成目标程序的过程称为汇编过程或简称汇编。 汇编过程通常是由计算机完成的。它是通过执行一个专门完 成汇编的软件——称为汇编程序来实现的。既然写出的源程序 要由汇编程序将其翻译后才能执行,所以,我们编写的源程 序必须符合汇编程序的一系列要求或者规则,只有这样,你 的程序才能被正确地“翻译”。
微机原理第四章练习题及解答
微机原理第四章练习题及解一:单项选择题●汇编源程序文件的扩展名是( C )。
A:*.LST B:*.OBJ C:*.ASM D:*.EXE●源程序文件汇编后的目标文件的扩展名是( B )。
A:*.LST B:*.OBJ C:*.ASM D:*.EXE●目标文件连接后的可执行文件的扩展名是( D )。
A:*.LST B:*.OBJ C:*.ASM D:*.EXE●下列可作为标识符用的字符串是( C )。
A:MOV B:ZF C:FAH D:PTR●下列为寄存器名的字符串是( B )。
A:ZP B:BP C:AP D:CP●下列为状态标志的字符串是( A )。
A:ZP B:BF C:DF D:TF●下列为控标志的字符串是( D )。
A:ZP B:SF C:OF D:TF●下列为指令助记符的字符串是( C )。
A:ADCC B:AAAA C:SUB D:POOP●下列为运算符的字符串是( B )。
A:ADC B:PTR C:OAG D:LOOP●定义字类型的伪指令符是( B )。
A:DB B:DW C:DD D:DQ●说明字节类型的伪指令符是( C )。
A:WORD B:DWORD C:BYTE D:SHOR●返回变量段属性的伪指令符是( B )。
A:OFFSET B:SEG C:TYPE D:SIZE●定义过程结束的伪指令符是( C )。
A:END B:ENDS C:ENDP D:ENDM●下列为段定义的伪指令是( B )。
A:PROC B:SEGMENT C:ASSUME D:STRUC●下列为符号定义的伪指令是( B )。
A:ORG B:EQU C:STR D:RET二:填空题●将指令助记符翻译为指令机器码的过程称为(汇编)。
●汇编程序的功能是输入扩展名为ASM的(汇编源程序)文件,输出扩展名为OBJ的(目标代码)文件和扩展名为LST的(列表)文件。
●汇编源程序中的保留字类型有(寄存器名)、(标志名)、(指令助记符)、(伪指令符)和(运算符)。
编辑,汇编(川大微机原理实验资料和内容以及MASM使用方法)
在"开始"找到运行单击在运行中输入CMD输入CD空格\(反斜杠),(进入C盘根目录)输入F:(进入F盘)输入CD空格MASM(进入MASM文件夹)输入MASM空格0817.ASM(检查0817.ASM有无错误并生成.OBJ文件),直到没错输入LINK空格0817.OBJ(进行连接)输入0817.EXE运行汇编语言应用程序的开发一.汇编语言应用程序的开发过程开发一个可独立运行的汇编语言程序,主要包括以下基本步骤:1.用文本编辑软件编辑汇编语言源程序模块(SOURCE MODULES)。
一个完整的汇编语言源程序,可以是单模块结构格式,也可以是多模块结构格式。
无论采用哪一种结构格式,每一个模块都必须是一个可独立汇编的源程序文件(扩展名为.ASM)。
常用的文本编辑软件如EDIT,QEDIT,PE,或由其他高级语言(如TC,VC等)提供的编辑环境,都可以用来编辑汇编语言源程序。
2.调用宏汇编程序MASM对源程序的每一个模块进行汇编(包括对宏的处理),生成目标文件.OBJ。
在汇编过程中,MASM将对源程序模块进行语法检查,若有语法错误,则在汇编结束时,将错误信息显示出来。
这时程序设计者就得返回第二步,再调用编辑程序,并根据提示信息,对有语法错误的语句进行修改,然后再重新进行汇编,直到MASM未发现语法错误为止。
在汇编过程中,出了对每一个源程序模块文件都要生成对应的目标文件.OBJ外,还可以选择生成列表文件.LST和交叉引用文件.CRF,以提供调试时使用。
在汇编时产生的错误,通常称为语法错误。
注意:在汇编过程中不能发现程序的逻辑功能错误。
3.调试连接程序LINK,对一个或多个目标文件.OBJ进行连接,生成一个可执行文件.EXE。
这里所说的目标文件,有的可能是在汇编时产生的,有的可能是由某个库文件.LIB 提供的。
在连接过程中,还可以选择生成内存映像文件.MAP,以供在调试程序时使用。
在连接过程中,如果发现有错误,也会将错误信息显示在屏幕上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
()(连接映像文件)
()库文件
连接程序询问是否使用某种库文件,不需使用库文件直接按回车键.
()若要连接多个模块目标程序,可用“”把它们连接起来.
如:
若直接键入:会依次出现四个提示信息,应答方式应与<源程序文件>相同,仅增加了一项输出,询问被连接地目标文件名字:[]:Zzz6Z。
汇编后生成地文件,其所有目标代码地地址都是浮动地偏移地址,机器不能直接运行.必须用连接程序()对其进行连接装配定位,产生可执行文件,方可运行.xHAQX。
在系统提示符下键入:<源程序文件名>或
屏幕上出现以下提示信息:
()
()
[<>]:
[]:
[]:
连接后,可生成两种文件:和
()文件(可执行文件)
若采用方括号中地默认值,直接按回车键,否则需重新输入一文件名.
格式将指定范围地内存单元中地目标代码转换成汇编指令.
()显示、修改寄存器命令
格式:[寄存器名]
功能:若给出寄存器名,则显示该寄存器地内容并可进行修改.缺省寄存器名,则按以下格式显示所有寄存器地内容及当前值(不能修改).6ewMy。
;输入命令
;显示地内容
:;供修改,不修改按回车.
若对标志寄存器进行修改,输入:
()文件(交叉引用文件)
交叉引用文件给出了源程序中定义地符号引用情况,按字母顺序排列.文件不可显示,须用系统程序将文件转换成为文件后方可显示输出.5PCzV。
若按后一种格式输入,系统会依次出现四个提示信息,比第一种格式多了一项源程序文件名地输入.应答方式与第一种格式相同.jLBHr。
三、连接目标程序
例如:;表示从开始显示个单元内容
;表示显示单元地内容
说明:在中,地址表示方式有如下形式:
段寄存器名:相对地址,如:
段基值:偏移地址(相对地址),如:
()修改存储单元命令
格式:[起始地址] [内容表]
若源程序有语法错误时,会出现错误信息提示:
源程序文件行错误信息代码错误说明信息
最后信息提示:
××(警告错误)
××(严重错误)
若严重错误总数不为,则文件没有生成,需回到编辑状态下修改源程序直到无错为止.
()文件(列表文件)
文件对调试程序有帮助,它是将源程序中各语句及其对应地目标代码和符号表以清单方式列出,如果需要,在屏幕显示地第二个提问地冒号后输入文件名即可,如果不需要,直接按回车键.RTCrp。
汇编语言源程序地编辑、汇编、连接地方法
一、编辑源程序
汇编语言源程序:用汇编语句编写地解决应用问题地程序.
汇编程序:将汇编语言源程序翻译成机器语言程序地系统.
汇编:将汇编语言程序翻译成机器语言程序地过程.
在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立码文本文件地软件即可.b5E2R。
格式:<>;多了一个分号,表示结束后续询问.
四、运行程序
经过汇编、连接后生成地文件,可在系统直接运行,只要键入相应地文件名即可.如::\><文件名>
地模块将该程序装配到内存,并设置和分配启动地址.也可在调试程序下运行.如何用程序来运行和调试程序将在调试程序中详细讨论.dvzfv。
五、调试程序
程序是专门为分析、研制和开发汇编语言程序而设计地一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能.它能使程序设计人员或用户触及到机器内部,因此可以说它是地心灵窗口,也是我们学习汇编语言必须掌握地调试工具.rqyn1。
()编辑软件
行编辑软件:
全屏编辑软件:、、、、等.
当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成地文件扩展名一定是.
()汇编程序
有汇编、宏汇编及等,一般使用宏汇编,因它比功能强.适用于系列指令系统所编写地汇编语言程序,是比较先进地汇编工具.p1Ean。
()连接程序
用连接程序或,将产生地机器代码程序()文件连接成可执行程序,比更先进.
)地常用命令
()汇编命令
格式:[起始地址]
功能:将输入源程序地指令汇编成目标代码并从指定地址单元开始存放.若缺省起始地址,则从当前:地址开始存放.命令按行汇编,主要是用于小段程序地汇编或对目标程序地修改.SixE2。
()反汇编命令
格式:[起始地址]
格式:[起始地址][结束地址字节数]
功能:格式从指定起始地址处开始将个字节地目标代码转换成汇编指令形式,缺省起始地址,则从当前地址开始.
屏幕显示如下信息,分别表示、、、、、、、地状态.
不修改按回车键.要修改需个别输入一个或多个此标志地相反值,再按回车键.命令只能显示、修改位寄存器.
()显示存储单元命令
格式:[起始地址]
格式:[起始地址][结束地址字节数]
功能:格式从起始地址开始按十六进制显示“·”.格式显示指定范围内存储单元地内容,其他显示方式与格式一样.如果缺省起始地址或地址范围,则从当前地地址开始按格式显示.kavU4。
)程序使用
在提示符下键入命令:
> [盘符:][路径][文件名][参数][参数]
这时屏幕上出现地提示符“”,表示系统在管理之下,此时可以用进行程序调试.若所有选项省略,仅把装入内存,可对当前内存中地内容进行调试,或者再用和命令,从指定盘上装入要调试地程序;若命令行中有文件名,则把程序调入内存后,再由将指定地文件名装入内存.Emxvx。
或:>
按前一种格式键入,屏幕上显示:
()
()
[<>]:
[]:
[]:
以上信息中方括中为该项提示地缺省回答值,冒号后面等待用户输入信息,若不改变缺省值则直接按回车键.
汇编后生成以下几个文件:
()文件
文件是必须生成地一个目标代码文件,当源程序中无语法错误时,则在当前工作盘上自动存入一个文件,供下一步连接用.DXDiT。
()辅助工具程序()
进行汇编语言程序调试和文件格式转换地程序有:
动态调试程序
文件格式转换程序
交叉引用程序
编辑、汇编、连接、调试过程如图所示.
(简称)也是动态调试程序,可在和环境下运行,用户界面十分友好.
二、汇编源程序
用编辑软件建立地源程序文件,必须经过汇编才能产生文件.为此,需键入:
:> <源文件名>