汇编语言源程序的运行过程复习课程

合集下载

汇编语言的基本表达及其运行 教学PPT课件

汇编语言的基本表达及其运行 教学PPT课件

5.4.2 符号定义伪指令
符号定义伪指令的用途是给一个符号重新命名,或定 义新的类型属性等。这些符号可以包括汇编语言的变量名、 标号名、过程名、寄存器名以及指令助记符等。
常用的符号定义伪指令有EQU、=、LABLE。
(5)综合运算符可以用来建立和临时改变变量 或标号的类型以及存储器操作数的存储单元类型, 而忽略当前的属性,所以又称为属性修改运算符。
有6个综合运算符:PTR、段属性前缀、SHORT、 THIS、HIGH 和LOW。
各类运算符和常数、寄存器名、标号、变 量一起共同组成表达式。
在计算具有多个运算符的表达式值时,按 以下规则操作:
2.语句格式 一般情况下,汇编语言的语句可以由以下几部分组成: [名字] 操作符 [操作数] [;注释] ➢ 名字是一个符号,它表示本条语句的符号地址。一般 来说,名字可以是标号和变量,统称为标识符。 注意:标号和变量都具备3种属性——段属性、偏移属性及 类型属性。 ➢ 操作符可以是机器指令、伪指令和宏指令的助记符。 ➢ 操作数字段是操作符的操作对象。操作符在完成相应 的操作时要求有一系列的操作数。当有两个或两个以上的 操作数时,各操作数之间用逗号隔开。 ➢ 注释字段是以“;”开头的说明部分,可以用英文或 者中文书写。注释字段是语句的非执行部分 。
5.2.2 汇编语言源程序的语句类型和语句格式
1.语句类型 8086宏汇编MASM使用的语句可以分成3种类型:
➢ 指令语句:这类指令能够产生目标代码,是CPU可以执行 的能够完成特定功能的语句,主要由机器指令组成。在汇编时 一条指令语句被翻译成对应的机器码,对应着特定的操作。 ➢ 伪指令语句:伪指令语句是为汇编程序和连接程序提供一 些必要控制的管理性语句,它不产生目标代码,仅仅在汇编过 程中告诉汇编程序应如何汇编,并完成相应的伪操作。 ➢ 宏指令语句:宏指令语句是由编程者按照一定的规则来定 义的一种较“宏大”的指令,可包括多条指令或伪指令 。

汇编语言源程序运行步骤和DEBUG的使用

汇编语言源程序运行步骤和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的结束方式,将其编辑、连接、运行,熟悉汇编源程序不同的结束方式。

[所有分类]第4章 汇编语言程序设计ppt课件

[所有分类]第4章  汇编语言程序设计ppt课件

JMP_128:MOV A,R3
RL A MOV DPTR,#JMPTAB
JMP @A+DPTR JMPTAB:AJMP ROUT00
AJMP ROUT01


AJMP ROUT7F
128个子程序首址

•说明:此程序要求128个转移目的地址(ROUT00 ~ROUT7FH)必须驻 留在与绝对转移指令AJMP相同的一个2KB存储区内。
第4章 汇编语言程序设计及知识
§4.1 编程的步骤、方法和技巧 §4.2 汇编语言源程序的编辑和汇编
2021/5/19
§4.1 编程的步骤、方法和技巧
§4.1.1 编程的步骤 §4.1.2 编程的方法和技巧 §4.1.3 汇编语言程序的基本结构
2021/5/19
编程的步骤
一、分析问题 二、确定算法 三、画程序流程图 四、编写程序
LOOP : CLR C SUBB A,@R1 JNC NEXT MOV A,@R1 SJMP NEXT1
NEXT: ADD A,@R1 NEXT1: INC R1
DJNZ R2,LOOP MOV MAX,A
2021/5/19
循环结构
例:在内部RAM的20H~ 2FH连续16个单元中存放单 字节无符号数。求16个无 符号数之和,并将其和存放 在31H、30H中。用R0作加 数指针,R7作循环次数计 数器。
一、顺序结构
顺序程序是最简单的程序结构,即顺序 结构。
程序按顺序一条一条地执行指令。
2021/5/19
顺序结构举例
例1 双字节乘法子程序。 (R4) (R3)×(R2)=[(R4) ·28+ (R3) ] ·(R2) =(R4) ·(R2) ·28+ (R3) ·(R2)

汇编语言源程序ppt课件

汇编语言源程序ppt课件
其中字变量W_TABLE的内容为1122H,下一 个字单元的内容为3344H。
编辑版pppt
34
数据定义语句的具体形式和功能
(4)用DB伪指令在内存中定义一个字符串。字符串 中的每一个字符用它的ASCII码值来表示,为一个字 节,所以字符串的定义必须用DB命令。
例如:MESSAGE DB ‘HELLO’
编辑版pppt
20
汇编语言的语句格式(续)
其中,方括号中的内容为可选部分,操作数部分或是0、 1操作数,或是由逗号隔开的多个操作数。
(1)标号和名字:标号和名字分别是给指令单元和伪 指令起的符号名称,用符号汇编语言规定的标识符来表 示。标号后面必须有冒号,名字后面没有。
标号和名字的选择有一些限制。首先,它们必须符号汇 编语言的标识符定义,即以字母开头,由字母(A~Z或 a~z,汇编程序不区分大小写)、数字及部分特殊字符 (?、@、$和下划线_等)组成的字符串表示,字符串 长度不能超过31个。此外,标识符不能是汇编言中有特 定意义的保留字。
编辑版pppt
22
操作数
常量 —— 数值或字符、字符串 寄存器 存储器单元 变量或标号 表达式 —— 可包括各种运算符
编辑版pppt
23
常量
在汇编时已经确定其值且程序运行期间不变化 的量为常量,如语句中的立即数或端口地址等。
这些常量的形式各不相同,常用的有二、十、 八或十六进制的整型数值常量、字符串常量和 已赋值的常标识符。
17
语句的种类(续)
宏指令语句 是以某个宏名字定义的一段指令序列。汇编时,
凡有宏指令语句的地方都将用相应的指令序列 的目标代码插入。
编辑版pppt
18
汇编语言的语句格式
指令性语句 —— 由CPU执行的指令 语句格式:

《汇编语言源程序》课件

《汇编语言源程序》课件

嵌入式系统的开发
实时控制系统
在实时控制系统中,程序的执行需要精确的时间控制 。汇编语言由于其执行速度快、可直接操作硬件的特 性,常用于编写实时控制系统的关键部分。
智能仪表
智能仪表是工业自动化领域中的重要组成部分,需要 实现实时数据采集、处理和控制。汇编语言在智能仪 表的底层软件设计中也得到了广泛应用。
伪指令是一种特殊的指令,它不 是由计算机硬件直接执行的,而 是由汇编程序在编译时处理的。
常用伪指令
常用伪指令包括.ORG、.END、 .DB、.DW等,它们分别用于指定 程序的起始地址、结束标记、定 义字节型数据、定义字型数据等 。
伪指令使用方法
伪指令的使用方法一般是在程序 中以特定的格式出现,例如 “.ORG 0x1000”表示将程序的 起始地址设置为0x1000。
宏与子程序的区别和联系
区别
子程序是预先编写好的一段程序代码,可以在主程序中被调用执行;而宏是用名称代替一段程序代码,在编译时 进行替换。
联系
两者都可以实现代码的复用和减少重复代码,提高程序的可读性和可维护性。子程序可以看作是运行时的函数, 而宏是编译时的函数。在实际编程中,可以根据需要选择使用子程序或宏来达到代码优化的目的。
游戏程序的编写
要点一
游戏引擎
游戏引擎是游戏开发的核心,负责渲染图形、处理用户输 入、调度任务等。汇编语言在游戏引擎的底层实现中也有 所应用,尤其是在需要高效图形渲染的场景中。
要点二
游戏特效
游戏特效是游戏中吸引玩家的一个重要方面,包括粒子效 果、物理模拟等。汇编语言在实现这些特效时,可以利用 其直接操作硬件的特性,提高执行效率。
《汇编语言源程序 》ppt课件
目 录
• 汇编语言概述 • 汇编语言的基本语法 • 汇编语言的程序流程控制 • 汇编语言的子程序和宏 • 汇编语言的应用 • 汇编语言的发展趋势和未来展望

简述汇编语言程序运行步骤

简述汇编语言程序运行步骤

简述汇编语言程序运行步骤汇编语言程序是一种低级语言,它直接操作计算机硬件资源。

了解汇编语言程序运行步骤对于理解计算机的底层工作原理以及编写高效的代码至关重要。

本文将简述汇编语言程序的运行步骤,以帮助读者对该过程有一个清晰的了解。

汇编语言程序的运行步骤可以大致分为如下几个环节:预处理、编译、汇编、链接和运行。

以下将详细描述每个步骤的功能和过程。

1. 预处理:在预处理环节,汇编语言程序会经过预处理器的处理。

预处理器主要负责处理宏定义、头文件包含、条件编译等指令,以生成一份经过预处理的源代码文件。

预处理环节的目标是去除源代码中的注释、展开宏定义、处理条件编译等操作,为后续步骤做准备。

2. 编译:编译是将预处理得到的源代码转化为汇编语言代码的过程。

编译器将预处理后的源代码进行词法分析、语法分析、语义分析等操作,生成相应的汇编语言代码。

编译器还会进行优化操作,以提高程序的执行效率。

3. 汇编:汇编是将编译得到的汇编语言代码转化为机器代码的过程。

在这一步骤中,汇编器将汇编语言代码转化为计算机可以理解和执行的二进制指令。

4. 链接:链接是将多个目标文件链接在一起,形成一个可执行文件的过程。

在这一步骤中,链接器将编译得到的目标文件与系统库文件进行链接,解析符号引用,生成最终的可执行文件。

链接的目标是生成一个包含所有必要信息的可执行文件,以便能够正确地执行程序。

5. 运行:运行是将可执行文件加载到计算机的内存中,并执行其中的指令。

在运行过程中,处理器按照指令的顺序执行程序,对数据进行相应的处理,最终得到程序的结果。

以上即为汇编语言程序的运行步骤。

通过对这些步骤的简要描述,读者可以对程序的整个运行过程有一个初步的了解。

深入理解每个步骤的原理和细节,对于编写高效的汇编语言程序至关重要。

因此,建议读者在掌握基本步骤的基础上,进一步学习汇编语言的相关知识,以提升自己的编程能力。

总结起来,汇编语言程序的运行步骤包括预处理、编译、汇编、链接和运行。

汇编语言第4章PPT课件

汇编语言第4章PPT课件
3
2. 汇编语言程序设计与执行过程
输入汇编语言源程序(EDIT) 汇编(MASM) 链接(LINK) 调试(TD)
源文件 . ASM 目标文件 .OBJ 可执行文件.EXE 最终程序
4
3. 汇编语言源程序结构
由多个逻辑段组成,包含: 代码段:存放源程序的所有
数据段名 SEGMENT …
数据段名 ENDS
26
一、数据定义伪指令
用途:定义变量类型,给存储器赋初值,或仅给变量分配存储单 元,而不赋予特定的值。
格式: [变量名] DB 操作数;定义字节 [变量名] DW 操作数;定义字 [变量名] DD 操作数;定义双字 [变量名] DQ 操作数;定义8个字节 [变量名] DT 操作数;定义10个字节
操作数——是赋给变量的初始值,可以有一个,也可以有多个, 但不能超出数据类型范围。操作数可以是数值、字 符串、?、或者DUP。
CLC
;CF=0
LPER:MOV AL,DATA2[SI]
ADC DATA1[SI],AL
INC SI
DEC CX
JNZ LPER
MOV AH,4CH
INT 21H
;返回DOS
CODE ENDS
END START
7
二、汇编语言语句类型及格式
1. 汇编语言语句分类
指令性语句
CPU执行的语句, 能够生成目标代码
段 值 变量所在段的段地址 偏移量 变量单元地址与段首地址之
间的位移量。 类 型 字节型、字型和双字型
14
3)表达式
组成:操作数:常量、寄存器名字、存储器操作数 运算符:
算术运算 逻辑运算 关系运算 取值运算和属性运算 其它运算
15

汇编语言程序设计习题解答及课程实验、设计辅导

汇编语言程序设计习题解答及课程实验、设计辅导

实验一汇编程序的汇编及运行1.实验目的(1)熟悉汇编程序的汇编、连接、执行过程;(2)生成LST文件,查看LST文件;(3)生成OBJ文件,修改语法错误;(4)生成EXE文件;(5)执行程序。

2.实验涉及知识汇编程序从编写到执行的过程编程→.ASM→编译→.OBJ→连接→.EXE→加载→内存中的程序→执行1)编写源程序用EDIT或记事本输入各段,并存储成源程序(保存在MASM目录下),扩展名为ASM。

2)对源程序进行汇编、连接操作如下:(1)在DOS状态下,进入MASM目录;(2)输入命令:MASM 文件名(连同扩展名);(3)在系统出现的提示中输入:object filename[.obj]:按回车键。

Source listling[nul.lst]:输入:文件主名,生成lst文件,也可以不生成,直接按回车键。

Lst文件用于查看编译为目标文件的过程中产生的中间结果。

Cross-reference [nul.crf]:按回车键。

(4)如果系统没有提示出错,那么编译过程就完成了。

如果提示错误则应用edit打开源文件进行修改,然后再重复2和3步骤(5)输入:link 文件主名(不要输扩展名,也可以输入扩展名.obj)run file [.exe]:按回车键。

List file [nul.map]:按回车键。

Libraries [.lib]:按回车键。

(6)没有提示错误,汇编过程就结束了,产生了exe可执行文件。

如果出现‘no stracksegment’的错误警告,不用理会。

3)执行程序(由DOS中的COMMAND命令将文件加载入内存)在DOS提示符下直接输入文件主名就可以执行文件了。

程序执行后,有的会显示结果,有的可能执行后什么结果都没有,是因为程序中没有显示命令。

3.实验内容1)将下面的数据段输入,取名1.ASM,保存在MASM文件夹下。

生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。

教学课件第六章汇编语言程序

教学课件第六章汇编语言程序
6.4.3 循环程序设计:结构示意见P138图6.7。 6.4.4 子程序设计
返回
6.4.4 子程序设计
1. 子程序的结构 2. 设计时应解决的几个问题 3. 子程序的嵌套:其示意图见P149图6.9。 4. 递归子程序 可重入子程序
返回
设计时应解决的几个问题
1. 调用程序和子程序之间的转返 2. 调用程序和子程序之间的参数传递 3. 保护现场和恢复现场
1. 符号定义伪指令 2. 数据定义伪指令 3. 段定义伪指令 4. 模块定义伪指令 5. 设置段内偏移地址伪指令 6. 过程定义伪指令
返回
6.2 汇编语言程序结构
1. 汇编语言程序的一般结构 2. IBM—PC中程序正确返回DOS问题
返回

6.3 系统功能调用
系统功能调用含87个子程序,每个子程序对应 一个功能号。
返回
1. 01H功能调用 2. 02H功能调用 3. 05H功能调用 4. 09H功能调用 5. 0AH功能调用 6. 4CH功能调用
返回
6.4 汇编语言程序设计
6.4.1 顺序程序设计:使构成程序的三种基本 结构之一,是最简单的程序或程序块,由若干 语句线性组成。
6.4.2 分支程序设计:根据给定条件进行判定, 进而做出相应处理。其结构见P132图6.2。
6.1 汇编语言的基本语法
6.1.1 语句类别:汇编语言所使用的语句可 分为三种:指令语句、伪指令语句、宏指 令语句。 6.1.2 语句结构 6.1.3 语句中的数据项 6.1.4 汇编语言伪指令
返回
6.1.3 语句中的数据项
1. 标识符 2. 保留字 3. 表达式 4. 地址表达式
返回
6.1.4 汇编语言伪指令

汇编语言源程序的运行过程

汇编语言源程序的运行过程

..汇编语言源程序的运行过程一、概述二、具体操作过程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 进行编辑,也必须进行此步。

否则,若源程序中存在语法错误,下一步进行汇编后,不予提示,也不生成机器码文件,无法进行再下一步的连接,致使程序无法运行。

总复习第3章 汇编语言程序设计ppt课件

总复习第3章 汇编语言程序设计ppt课件
算术运算符 逻辑运算符 +(加法) -(减法) *(乘法) /(除法) MOD(求余) AND(与) OR(或) XOR(异或) NOT(非) 关系运算符 EQ(相等) NE(不等) LT(小于) GT(大于) GE(大于等于) 分析运算符 TYPE LENGTH SIZE OFFSET 属性运算符 PTR THIS SHORT HIGH LOW :
9
LE(小于等于) SEG
4)分析运算符 ①OFFSET运算符:利用运算符OFFSET可以得到一个标号或变 量的偏移量。 使用格式:OFFSET 变量名或标号名
②SEG运算符:利用运算符SEG可以得到一个标号或变量的 段基址 格式: SEG 变量名或标号名
10
③PTR运算符:用来指定存储器操作数的类型。 PTR的应用场合主要有两处:一种情况是当要访问的存储单元的 类型不确定时,可以用PTR明确指明要访问的存储单元的类型。如: MOV [BX],10H MOV BYTE PTR[BX],10H BX 10H
34
2. DOS软中断及系统功能调用
(2) DOS系统功能调用INT 21H
1. 设置功能号AH 2. 置入口参数 3. 执行INT 21H 4. 分析出口参数
注意:使用时保存好AH寄存器的内容
35
1)键盘输入(1号调用)
● 格式:
MOV AH,1 INT 21H
● 功能:等待从键盘输入一个字符→AL,同时将此字 符在屏幕上显示出来。 说明:系统执行该功能调用时将等待键盘输入,一旦按 键,就将其字符的ASCII码读入,首先检查是否是 〈CTRL〉+〈Break〉,若是,则从本调用的执行 中退出;否则,将ASCII码→AL,同时将该字符送显 示器显示。

第四章1-2讲 汇编语言程序设计ppt课件

第四章1-2讲 汇编语言程序设计ppt课件

精选ppt课件2021
25
天津工业大学
(4)带DUP的表达式
• 在表达式中使用重复数据操作符DUP,可以为连 续的存储单元提供重复数据,其格式为:
• N DUP(表达式)
• 其中N为重复因子,只能取正整数,表示定义了N 个重复数据存储单元,其类型由它前面的数据定 义伪指令确定,而每个数据存储单元中的初值由 DUP后面圆括号中的表达式给定。
随机数
DB 3 DUP(22H,11H,?)
精选ppt课件2021
27
天津工业大学
09FF:0000 22 11 ? 22 11 ? 22 11
09FF:0008 ?
0F99:000B
精选ppt课件2021
28
天津工业大学
用?预留存储空间
• MEM1 DB 34H,’A’,?,?,?

DW 20 DUP(?)
• LENGTH 变量 * TYPE 变量
精选ppt课件2021
40
天津工业大学
– LENGTH和SIZE运算符的具体运算规则是:如果变量是用重复操 作符DUP定义的,那么运算符LENGTH的运算结果是外层DUP的 给定值 (即外层重复次数),如果没有用DUP定义的变量,运算 结果总是1。
而运算符SIZE是LENGTH和TYPE两个运算结果的乘积。
天津工业大学
第4章 汇编语言程序设计
4.1 汇编语言源程序 4.2 伪指令 4.3 DOS系统功能调用 4.4 汇编语言程序设计基础 4.5 综合举例
精选ppt课件2021
1
天津工业大学
4.1 汇编语言源程序
了解:
• 计算机的三种语言 • 源程序的结构 • 汇编语言语句格式

41_汇编语言与汇编程序课件

41_汇编语言与汇编程序课件
END [表达式] 其中表达式表示该汇编程序的启动地址。例如:
┇ END START 则表明该程序的启动地址为START。
22
§5.4汇编语言程序上机操作过程
1. 汇编语言程序上机调试步骤 1. 编写源程序 在弄清问题的要求,确定方案后,汇编语言程序设计
者便可依据前面的指令系统和汇 编语言的规定,逐个模块地编写汇编语言源程序。
3
§5.2 汇编语言中的常数与表达式
5.2.1常数 常数可以分数值常数和字符串常数两类。数值常数按其基数 的不同,可有二进制数、八进制数、十进制数、十六进制数 等几种不同的表示形式,汇编语言中采用不同的后缀加以区 分。 B:表示二进制数。例如,10100101B。 D :表示十进制数。例如,278D或278。 Q: 表示八进制数。例如,567Q,263Q。 H: 表示十六进制数。例如,9AH,5678H。
;定义数据段 ;定义字节数据 ;定义字数据 :定义双字数据 ;数据段结束
7
MOV BX,SEG VARl 汇编成: MOV BX,0300H MOV CX,SEG VAR2 汇编成: MOV CX,0300H MOV DX,SEG VAR3 汇编成; MOV DX,0300H
2)OFFSET运算符:利用运算符OFFSET可以得到一 个标号或变量的偏移量。 使用格式:OFFSET 变量名或标号名
DELAY DELY: WAIT:
DELAY
PROC MOV BL,10 MOV CX,2801 LOOP WAIT DEC BL JNZ DELY RET ENDP
21
5.3.5汇编结束伪指令END 该伪指令表示源程序的结束,将汇编程序停止汇
编。因此,任何一个完整的源程序均应有END指令, 其一般格式为

《汇编语言》第四章 课件01

《汇编语言》第四章 课件01

更多精彩资编程源请关注:
4.2 源程序

伪指令 没有对应的机器码的指令,最终不被CPU所执 行。
谁来执行伪指令呢? 伪指令是由编译器来执行的指令,编译器根据 伪指令来进行相关的编译工作。

更多精彩资编程源请关注:
定义一个对使用的伪指令,这 是在写可被编译器编译的汇编程序时,必须要 用到的一对伪指令。 segment和ends的功能是定义一个段,segment 说明一个段开始,ends 说明一个段结束。 一个段必须有一个名称来标识,使用格式为: 段名 segment 段名 ends

一个汇编语言程序从写出到最终执行的 简要过程:
编写 编译 连接 执 行
更多精彩资编程源请关注:
4.2 源程序

汇编指令
伪指令 XXX segment XXX ends end assume

更多精彩资编程源请关注:
4.2 源程序

汇编指令
有对应的机器码的指令,可以被编译为 机器指令,最终为CPU所执行。


通过assume说明这种关联,在需要的情 况下 ,编译程序可以将段寄存器和某一 个具体的段相联系。
更多精彩资编程源请关注:
源程序中的“程序”
汇编源程序: 伪指令 (编译器处理) 汇编指令(编译为机器码)
程序:源程序中最终由计算机执行、处 理的指令或数据。
更多精彩资编程源请关注:
更多精彩资编程源请关注:
引言

现在我们将开始编写完整的汇编语言程 序,用编译器将它们编译成为可执行文 件(如:*.exe文件),在操作系统中运 行。
这一章,我们将编写第一个这样的程序。

更多精彩资编程源请关注:
4.1 一个源程序从写出到执行的过程
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言源程序的运行过程收集于网络,如有侵权请联系管理员删除汇编语言源程序的运行过程一、概述二、具体操作过程1.编辑过程在计算机“附件”的“记事本”中,用word 编辑汇编语言源程序,比用编辑程序EDLIN 要方便得多。

因为使用后者,必须熟记它的各种命令及其功能。

使用前者的操作步骤如下:第一步:编辑并建立扩展名为ams 的文件开始→程序→附件→记事本→键入汇编语言源程序(也可用Ctrl+C 及Ctrl+V 拷贝已有程序)→文件→另存为→出现“另存为”窗口→在‘文件名:’处为该文件命名,并切记:将扩展名由.txt 改为.asm →在“另存为”窗口里的“我的电脑”中找到含有MASM.EXE 、LINK.EXE 以及DEBUG.EXE 这三个工具的文件夹(如,8086experi ),并双击之→该文件夹名便出现在“保存在:”处→保存(至此,该文件夹中将出现你所编辑的扩展名为asm 的汇编语言源程序。

此时的源程序以ASCII 码形式存盘,而非机器码)→关闭记事本。

注意:上述三个工具及用户程序必须在同一文件夹中。

此后,为显示,打印或修改该程序,双击该程序的图标即可。

在编辑程序文件NAME ·EXE收集于网络,如有侵权请联系管理员删除第二步:在DOS 下运行EDLIN ,以便查找并排除源程序中可能存在的语法错误。

window 状态→开始→运行→打开:cmd ↙→确定→出现DOS 提示符:C:\……>→指定存有你的程序的文件夹所在盘(如D 盘)为当前盘 D: ↙→D:\>cd 文件夹名↙→D:\文件夹名>edlin 文件名.asm ↙End of input file* E ↙按结束编辑命令E 之前,生成了一个扩展名为$$$的文件;结束编辑状态之后,该文件的扩展名由$$$变为BAK 。

特别指出:即使不用EDLIN 进行编辑,也必须进行此步。

否则,若源程序中存在语法错误,下一步进行汇编后,不予提示,也不生成机器码文件,无法进行再下一步的连接,致使程序无法运行。

除非源程序中无任何语法错误。

2.汇编过程D:\文件夹名>masm 文件名;↙汇编程序负责将源程序文件(扩展名为.ASM )翻译为二进制的机器码文件(扩展名为.OBJ )。

在汇编过程中,计算机对源程序文件要进行语法检查,若有错误,在汇编结束后,屏幕上将出现错误信息提示,这时需要返回到编辑过程,对有语法错误的语句进行修改,修改后的源程序需要重新汇编,直到汇编结束时无语法错误为止。

注意:汇编过程不能发现程序中的逻辑错误。

汇编结束时,生成扩展名为OBJ 的文件(即CPU 可识别的目标(object )文件,又称机器码文件)。

若在编辑阶段中留有任何语法错误未改,则不能生成OBJ 文件,从而无法往下进行。

* L ↙显示24条指令此处为选择性操作3.连结过程D:\文件夹名>Link文件名;↙我们学习汇编的主要目的,就是通过用汇编语言进行编程而深入地理解计算机底层的基本工作机理,达到可以随心所欲地控制计算机的目的。

基于这种考虑,我们的编程活动,大都是直接对硬件进行的。

我们希望直接对硬件编程,却并不希望用机器码编程。

我们用汇编语言编程,就要用到:编辑器(Edit)、编译器(Masm)、连接器(Link)、调试工具(Debug)等工具,而这些工具都是在操作系统控制下运行的程序,所以我们的学习过程必须在操作系统的环境中进行。

而操作系统,使用了许多工具,这势必要牵扯到操作系统、编译原理等方面的知识和原理。

我们只是利用这些环境、工具来方便我们的学习,而不希望这些东西分散了我们的注意力。

所以,对于涉及到而又不在本课程学习内容之中的东西,只做简单的解释。

连接的作用有以下几个:●当源程序很大时,可以将它分为多个源程序文件来编译,每个源程序编译成为目标文件后,再用连接程序将它们连接到一起,生成一个可执行文件;●程序中调用了某个库文件中的子程序,需要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件;●一个源程序编译后,得到机器码的目标文件,目标文件中的有些内容还不能直接用来生成可执行文件,需通过连接程序将这些内容处理为最终的可执行信息。

所以,既便只有一个源程序文件,而又不需要调用某个库中的子程序的情况下,也必须用连接程序对目标文件进行处理,生成可执行文件。

注意,对于连接过程,可执行的目标文件是我们要得到的最终结果。

LINK把汇编产生的目标程序(扩展名为.OBJ)转换为一个可执行文件(扩展名为.EXE)。

如果LINK运行结束时给出错误标志,这时仍需返回到编辑过程,修改源程序后重新汇编、连接,直到LINK运行结束时,不显示错误标志为止。

连接后,若显示:“Warning: no stack segments”,可不予理采。

4.调试过程收集于网络,如有侵权请联系管理员删除D:\文件夹名>debug文件名.exe↙—出现调试状态提示符‘—’,表示已进入调试阶段。

这时已存盘的代码段的机器码及其数据段的数据便由硬盘调入了内存,供调试用,但程序尚未执行。

CS已自动赋值,但DS和SS、ES(如果用到的话)尚未赋值(这三个段寄存器是通过程序的运行对其赋值的)。

三、DEBUG调试程序的使用DEBUG调试程序的功能十分强大,在DEBUG的控制下,操作人员可以通过命令直接输入汇编源程序,并用相应命令将其汇编成机器语言程序;然后调试并运行该程序,这样免去使用MASM和LINK程序的麻烦,因而调试周期短,除此之外,更重要的是,使用DEBUG,它能使程序设计人员触及到机器的内部,能观察并修改寄存器和存储单元的内容,能监视目标程序的执行情况,便于操作人员调试程序。

然而由于在DEBUG控制下,只宜编写较小的程序,编写较大程序很不方便,不便于程序的分块设计,它不具备编写大程序所需的编辑功能。

因而,人们通常使用DEBUG来调试程序,而很少用DEBUG来编写较大程序。

1.使用DEBUG调试程序的条件在你所使用的硬盘或软盘上,必须有DEBUG.EXE这个文件。

2.进入与退出DEBUG在进入DEBUG后,出现提示符“—”。

此时CPU各寄存器内容处于初始状态(注意:此时程序尚未执行):CS:保存程序开始运行段的段基值。

IP:保存第一条要执行的指令的偏移量。

收集于网络,如有侵权请联系管理员删除SS:保存程序段定义语句中组合类型指定作堆栈段的段基值。

SP:保存堆栈底部+1单元的偏移量。

DS、ES:保存程序段前缀的(PSP)的段基值。

标志寄存器:各标志位均为‘0’(复位)状态。

如需退出DEBUG,返回DOS操作系统,可使用:—Q3.程序连续运行的命令(1)在DEBUG下运行时:-G=CS:0(不返回DOS,显示“Program terminated normally”不保留运行结果)-G=CS:0,指令INT 21H所在地址(不返回DOS,保留运行结果)(2)在DOS下运行时:D:\文件夹名>不带扩展名的文件名(返回DOS)注意:一旦返回DOS,代码段、数据段以及寄存器内容均消失。

4.反汇编命令U已装入内存的可执行目标文件,可以用反汇编U命令将其转换成相应的源程序。

从而可以找出各段寄存器之值,以供调试用。

由第一条指令可知:CS=0B33收集于网络,如有侵权请联系管理员删除从第一、二条指令可看出:DS=0B30第三、四条指令表明:SS=0B31每个反汇编命令U只能对33个字节进行反汇编。

如有必要,可从断点处(此例的断点是0B33:0021)继续进行反汇编,为此只需键入命令U即可。

欲从某存贮单元开始进行反汇编的命令如下:—U该单元的段基址:偏移量例如:收集于网络,如有侵权请联系管理员删除收集于网络,如有侵权请联系管理员删除5.显示命令D或R(1)显示内存单元内容——D命令命令格式:D[地址]或 D[范围]其中,D是命令字母,[地址]或[范围]都是为了指定要显示的存储单元的范围。

例如:为显示代码段的内容:—DCS:0 ;可显示由CS:0存贮单元开始的128个存贮单元的内容。

为显示数据段的内容:—DDS:0 ;可显示由DS:0开始的128个存贮存单元的内容。

—DDS:100 ;从DS:100H开始显示80H个字节单元内容。

—D100 ;用上次使用的段寄存器显示80H个字节单元内容。

—DDS:100,110 ;从DS:100H开始显示11H个字节单元内容(显示范围为100H到110H)。

显示示例如下:在屏幕上显示内容分为3部分,左边是每一行存储单元的起始地址(段基址:偏移量),中间是各字节单元两位十六进制数内容显示,右边是把中间各字节单元用相应的ASCII码字符显示。

(2)显示寄存器内容——R命令例如:收集于网络,如有侵权请联系管理员删除收集于网络,如有侵权请联系管理员删除前两行显示的是上一条指令执行后所有CPU 内部寄存器的内容和全部标志位的状态,各标志位的复位(‘0’状态)和置位(‘1’状态)是用字符表示的,如下表所示。

(无单步标志TF )显示的第三行是表示现在CS :IP 指向的一条指令,也即是下一条即将执行的指令。

6.修改命令E(1)修改内存单元内容——E 命令此命令用于修改存储单元的内容,它有两种基本格式:(i )用命令中给定的内容表去代替指定范围的内存单元的内容:命令格式:E 地址 内容表例如:E ds: 200 BF “RST ” 7F则内容单元ds: 200到ds: 204这5个存储单元的内容,由表中指定的5个字节的内容所代替,在以DS: 0200为起始单元的连续五个字节单元中依次分别存放数据BFH ,字符‘R ’、‘S ’、‘C ’的ASCII 码和数据7FH 。

(ii )一个单元一个单元地连续修改方式命令格式:E 地址在输入了上述命令后,屏幕上显示指定单元的地址和原有的内容之后,键入新内容,为连续修改后续存贮单元的内容,可以采取下述操作;键入空格键,屏幕上显示下一个高字节单元的内容,并等待输入新的数据,如再键入空格键,则又显示更高一个字节内容,……,依次由低地址向高地址逐个字节单元进行修改,当修改完毕,按回车键,结束E命令。

(2)修改寄存器内容——R命令命令格式:R 寄存器名例如为了检查和修改寄存器AX的内容,可打入以下命令:—R AX则系统可能出现如下响应:AX 2F34M此时,若原内容不需修改,可直接键入回车键;若需要改变其内容,可输入1—4个16进制字符制,再按回车键就实现了修改。

例:—R AXAX 2F34;AX原有内容M 79FE;修改AX的内容(3)修改标志位状态命令的格式为:RF屏幕显示:OV DN EI NG ZR AC PE CY—可采取下述操作:若不需要修改任一个已设置的标志状态,可直接按回车键。

相关文档
最新文档