汇编程序1
实验一、汇编语言程序的上机过程及调试

实验一、汇编语言程序的上机过程及调试<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),便会出现三次提问,在这可以一路回车即可。
8086汇编语言程序设计——第一个程序

8086汇编语⾔程序设计——第⼀个程序本系列以80X86系列微型计算机为基础,以MASM5.0为汇编上机实验环境,重点介绍Intel8086指令系统。
Intel8086指令系统中有100多条指令,利⽤这些指令可以编写出复杂的程序实现更多功能。
汇编语⾔是直接控制计算机硬件⼯作的最简便的语⾔。
学习了汇编语⾔可具有在CPU寄存器级上进⾏控制和操作的能⼒,可获得直接对计算机硬件底层编程的经验。
⼀个计算的例⼦例 *编写⼀个汇编语⾔程序,实现下列公式计算。
假设X=4,Y=5汇编指令如下:如果在DEBUG下⽤A命令输⼊这些指令,必须把X、Y换成具体的数值;Z、Z1是存储单元地址,最后两条指令可写为MOV [0],AL和MOV [1],AH,这样才能⽤T命令执⾏。
D:\dos〉DEBUG-AMOV AL,4ADD AL,5MOV BL,8IMUL BLMOV BL,4MOV BH,0SUB AX,BXMOV BL,2IDIV BLMOV [0],ALMOV [1],AH采⽤DEBUG的A命令输⼊程序的做法明显不⽅便,⼀是⽆法给出变量名即符号地址,⼆是调试修改程序不便。
1. 编写⼀个完整的汇编语⾔源程序需要增加段定义伪指令和定义数据存储单元伪指令等必须有的伪指令。
伪指令与C语⾔等⾼级语⾔中的说明性语句的含义类似,起到说明作⽤。
⽤记事本gedit或者vi编写,保存到dos⽬录下注释符号为;号2. 汇编、链接、执⾏汇编语⾔源程序既可以⽤⼤写字母也可以⽤⼩写字母书写。
汇编语⾔程序建⽴及汇编过程如图所⽰。
⽤户编写的源程序要经汇编程序MASM汇编(翻译)后⽣成⼆进制⽬标程序,⽂件名默认与源程序同名、扩展名为.OBJ;再经过LINK连接⽣成可执⾏程序,⽂件名默认与源程序同名、扩展名为.EXE。
注意:源程序⼀定要和MASM和LINK⽂件放在同⼀个⽂件夹中。
执⾏MASM和LINK命令时需要按多次回车。
3. 在DEBUG下执⾏程序MOV AH,4C指令对应的偏移地址是0023,这就是断点(所谓断点,就是程序执⾏到该处停下来不再继续)。
汇编语言程序设计(第四版)第1_4章【课后答案】

汇编语言程序设计第四版【课后习题答案】第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。
〔解答〕CPU:包括运算器、控制器和寄存器组。
运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。
存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。
外部设备:实现人机交换和机间的通信。
〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB。
〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。
辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。
RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。
存储器由大量存储单元组成。
为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。
KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。
〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。
〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
Windows X64汇编入门(1)

Windows X64汇编入门(1)tankaiha最近断断续续接触了些64位汇编的知识,这里小结一下,一是阶段学习的回顾,二是希望对64位汇编新手有所帮助。
我也是刚接触这方面知识,文中肯定有错误之处,大家多指正。
文章的标题包含了本文的四方面主要内容:(1)Windows:本文是在windows环境下的汇编程序设计,调试环境为Windows Vista 64位版,调用的均为windows API。
(2)X64:本文讨论的是x64汇编,这里的x64表示AMD64和Intel的EM64T,而不包括IA64。
至于三者间的区别,可自行搜索。
(3)汇编:顾名思义,本文讨论的编程语言是汇编,其它高级语言的64位编程均不属于讨论范畴。
(4)入门:既是入门,便不会很全。
其一,文中有很多知识仅仅点到为止,更深入的学习留待日后努力。
其二,便于类似我这样刚接触x64汇编的新手入门。
本文所有代码的调试环境:Windows Vista x64,Intel Core 2 Duo。
1. 建立开发环境1.1 编译器的选择对应于不同的x64汇编工具,开发环境也有所不同。
最普遍的要算微软的MASM,在x64环境中,相应的编译器已经更名为ml64.exe,随Visual Studio 2005一起发布。
因此,如果你是微软的忠实fans,直接安装VS2005既可。
运行时,只需打开相应的64位命令行窗口(图1),便可以用ml64进行编译了。
1.jpg下载此附件需要消耗2Kx,下载中会自动扣除。
第二个推荐的编译器是GoASM,共包含三个文件:GoASM编译器、GoLINK链接器和GoRC资源编译器,且自带了Include目录。
它的最大好外是小,不用为了学习64位汇编安装几个G 的VS。
因此,本文的代码就在GoASM下编译。
第三个Yasm,因为不熟,所以不再赘述,感兴趣的朋友自行测试吧。
不同的编译器,语法会有一定差别,这在下面再说。
1.2 IDE的选择搜遍了Internet也没有找到支持asm64的IDE,甚至连个Editor都没有。
IBM-PC汇编语言程序设计(第二版)答案1-8章

///第一章. 习题1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001b=171h(2) 10000=10 0111 0001 0000b=2710h(3) 4095=1111 1111 1111b=fffh(4) 32767=111 1111 1111 1111b=7fffh1.2 将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101b=2dh=45(2) 1000 0000b=80h=128(3) 1111 1111 1111 1111b=ffffh=65535(4) 1111 1111b=ffh=2551.3 将下列十六进制数转换为二进制数和十进制数:(1) fa (2) 5b (3) fffe (4) 1234答:(1) fah=1111 1010b=250(2) 5bh=101 1011b=91(3) fffeh=1111 1111 1111 1110b=65534(4) 1234h=1 0010 0011 0100b=46601.4 完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3a+b7 (2) 1234+af (3) abcd-fe (4) 7ab×6f答:(1) 3a+b7h=f1h=241(2) 1234+afh=12e3h=4835(3) abcd-feh=aacfh=43727(4) 7ab×6fh=35325h=2178931.5 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)答:(1) (-85)+76=1010 1011b+0100 1100b=1111 0111b=0f7h;cf=0;of=0(2) 85+(-76)=0101 0101b+1011 0100b=0000 1001b=09h;cf=1;of=0(3) 85-76=0101 0101b-0100 1100b=0101 0101b+1011 0100b=0000 1001b=09h;cf=0;of=0(4) 85-(-76)=0101 0101b-1011 0100b=0101 0101b+0100 1100b=10100001b=0a1h;cf=0;of=1(5) (-85)-76=1010 1011b-0100 1100b=1010 1011b+1011 0100b=0101 1111b=5fh;cf=0;of=1(6) -85-(-76)=1010 1011b-1011 0100b=1010 1011b+0100 1100b=11110111b=0f7h;cf=0;of=01.6 下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) d8 (2) ff答:(1) d8h表示的带符号数为-40,d8h表示的无符号数为216;(2) ffh表示的带符号数为-1,ffh表示的无符号数为255。
ch4-1汇编语言程序设计(伪指令)

由汇编程序执行的“指令系统” 用于定义变量、分配存储区、定义逻辑段、
指示程序开始和结束等 在汇编时被解释执行,不产生任何目标代码
常用伪指令分类
数据定义伪指令 符号定义伪指令 段定义伪指令 过程定义伪指令 宏命令伪指令 结束伪指令
第四章 汇编语言程序设计
第四章 汇编语言程序设计
data SEGMENT
名字 Hello DB ‘Hello, world!’,0DH,0AH,’$’
data ENDS prog SEGMENT
伪指令
ASSUME CS:prog ,DS:data
start: MOV AX,data
MOV DS,AX
标号
LEA DX,hello
MOV AH,9
INT 21H 指令码 MOV AH,4CH
NUM:ADD AL,30H
RET
第四章 汇编语言程序设计
2.汇编语言与高级语言
• 汇编语言是一种依赖于计算机微处理器的语言 • 汇编语言一般不具有通用性和可移植性 • 进行汇编语言程序设计必须熟悉机器的硬件资
源和软件资源 • 高级语言是面向过程的语言 • 高级语言具有很好的通用性和可移植性
第四章 汇编语言程序设计
INT 21H
prog ENDS
操作数
END start
(4)操作数
常量 变量或标号 表达式 寄存器 存储器单元
第四章 汇编语言程序设计
第四章 汇编语言程序设计
表达式: 算术运算 逻辑运算 关系运算 取值运算和属性运算 其它运算
有数字表达式和地址表达式两种。 汇编时按优先规则对表达式进行计算,计算出
注意:
名字和标号: 标号后有冒号,在指令性语句前;名字后不加
汇编语言源程序的框架结构(1)

AH,1
;1号DOS功能调用,接收分支号
21H
AL,'0'
;进行合法判断
ERROR
AL,'2'
ERROR
BX,TAB
;取地址表首址
AL,30H
AL,1
;段内转移乘以2,段间转移乘以4
AH,AH
;AH清零
BX,AX
WORD PTR [BX]
;产生多分支转移
精选课件
A0: MOV INT JMP A1: MOV INT JMP A2: MOV INT JMP
AL,1
;AL←(X×4-Y)/2
Z,AL
;存结果
;取程序段前缀首地址
精选课件
PROC1 ENDP
CODE ENDS
§5.3 分支结构程序设计
分支程序结构可以有两种形式,如图5.4所示,它们分 别相当于高级语言程序中的IF-THEN-ELSE语句和CASE 语句,它们适用于要根据不同条件做不同处理的情况。
精选课件
: TAB
JMP SHORT A0
JMP SHORT A1
参考程序:
JMP SHORT A2 :
DATA SEGMENT
MENU DB 0DH,0AH,"0:Chinese!"
DB 0DH,0AH,"1:English!"
DB 0DH,0AH,"2: German!"
DB 0DH,0AH,"Please choose one to answer the following question:$"
解:要测试出VAR中1的个数就应该逐位进行测试,可根据最低 位是否为1来计数,然后用移位的办法把各位数逐次移到最低位去, 共需要测试8次。程序流程如图5.11所示:
实验一汇编语言上机及Debug调试

实验一汇编语言程序上机过程以及调试(1)一、预习内容1.工具软件MASM、LINK的使用2.常用DEBUG命令的使用: G,D,R,T,U,Q3.完整程序设计方法的格式。
二、目的要求1.掌握常用工具软件MASM、LINK的使用2.掌握常用DEBUG命令: G,D,R,T,U,Q 能灵活使用这些命令调试程序3.掌握完整程序设计方法的格式,能正确书写数据段,代码段等。
三、实验内容比较两个字符串string1和string2所含的字符是否相同,如果相同则显示’Match'否则显示’No match’.请读程序,并将程序补充完整。
DSEG SEGMENTstring1 db 'Move the cursor backward.'string2 db 'Move the cursor backward.'mess1 db 'Match.',13,10,'$'mess2 db 'No match.',13,10,'$'DSEG ENDSCSEG SEGMENTassume cs:CSEG, ds:DSEG, es:DSEG,MAIN PROC FARstart: mov ax, dsegmov ds, axmov es, axlea si ,string1①cld②repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx,mess1disp: mov ah,09hint 21hmov ax, 4c00hint 21hMAIN ENDPCSEG ENDSend start实验步骤:1)用文字编辑工具(记事本或EDIT)将源程序输入完整后保存在d:\masm下,注意保存时将文件扩展名改为.asm(如test1.asm)。
2)屏幕左下角”开始”–“运行”输入cmd ,进入dos命令操作,先用d: 和cd mas m 命令改变路经,接着用”masm + 文件名” (如masm test1,这里文件名可以不带扩展名)对源文件进行汇编,产生.obj文件和.LST文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件环境
主要是指支持汇编语言程序运行和帮助建立汇编语言源 程序的一些软件, 程序的一些软件,主要包括:
(1)DOS操作系统 DOS操作系统 (2)编辑程序 编辑程序EDIT. (3)宏汇编程序MASM.EXE 宏汇编程序MASM. (4)连接程序LINK.EXE 连接程序LINK. (5)调试程序 调试程序DEBUG.
8
汇编语言程序运行实例
程序要求: 程序要求:
从键盘输入10个字符 然后以与键入相反的顺序将10 10个字 从键盘输入10个字符,然后以与键入相反的顺序将10个字 10个字符, 符输出到显示屏幕上。设定源程序名为STR ASM。 STR. 符输出到显示屏幕上。设定源程序名为STR.ASM。
第一步: EDIT建立汇编语言源程序 第一步:用EDIT建立汇编语言源程序
源程序文件建立完毕后,调用宏汇编程序MASM对 源程序文件建立完毕后,调用宏汇编程序MASM对 STR.ASM进行汇编 结果如下图所示: STR.ASM进行汇编,结果如下图所示: 进行汇编,
11
第三步: 第三步: 用LINK进行连接生成可执行文件 进行连接生成可执行文件
汇编完毕程序正确,则可调用LINK进行连接,生成可 执行文件STR.EXE,过程如下图所示。
12
第四步: 第四步: 程序的运行
在DOS状态下,直接键入可执行的程序文件名STR, 然后从键盘输入10个字符,并将其倒序排列输出,过程 如下图所示。
13
汇编语言源程序的格式
汇编语言源程序通常由一个或几个程序 模块组成, 模块组成,每个模块一般由三个逻辑段组成: 数据段——存放数据 存放数据、 数据段——存放数据、变量 堆栈段——堆栈区域 堆栈段——堆栈区域 代码段——存放程序指令 代码段——存放程序指令
第4章 汇编语言程序设计
mov ax,12h call display Jmp 1234h
1
主要内容:
汇编语言的格式 汇编语言语句格式 伪指令 汇编语言程序设计
2
4.1 汇编语言的格式及相关基本概念 回顾:
机器语言——二进制数形式的指令和数据。 机器语言——二进制数形式的指令和数据。 B0 64 是什么意思?这就是机器语言。既不直 观,又不易理解和记忆. 又不易理解和记忆. MOV AL,64H ;很容易记忆理解,这就是助记 AL, 很容易记忆理解,这就是助记 符。 助记符——用便于记忆的英语单词表示的指令 助记符——用便于记忆的英语单词表示的指令 操作码。它反映了指令的功能和主要特征, 操作码。它反映了指令的功能和主要特征,便于人 们理解和记忆。
21
2.标号——指令所在内存单元的符号地址 2.标号——指令所在内存单元的符号地址
有三个属性: 段地址:即标号所在段的段地址; 段地址:即标号所在段的段地址; 偏移量:标号所代表存储单元的段内偏移地址; 偏移量:标号所代表存储单元的段内偏移地址; NEAR或FAR: 类 型:NEAR或FAR: NEAR—表示标号所在语句与转移指令/ NEAR—表示标号所在语句与转移指令/ 调用指令在同一码段内, 调用指令在同一码段内,跳转时 只需改变IP即可。 只需改变IP即可。 FAR—表示标号所在语句与转移指令/ FAR—表示标号所在语句与转移指令/ 调用指令不在同一代码段内。 若没有对类型进行说明,默认为NEAR。 若没有对类型进行说明,默认为NEAR。 标号通常作为转移指令 CALL指令 标号通常作为转移指令或CALL指令的转移地址。 转移指令或 指令的转移地址。
句都有一条机器码指令与其对应;
●指示性语句由汇编程序执行。它指出汇编 指示性语句由汇编程序执行。它指出汇编
程序应如何对源程序进行汇编,如何定义变 量、分配存储单元以及指示程序开始和结束 等。指示性语句无机器码指令与其相对应。
指令性语句汇编时生成机器码; 指令性语句汇编时生成机器码; 生成机器码 指示性语句汇编时不生成机器码。 指示性语句汇编时不生成机器码。 不生成机器码
LP1: LP1: mov ax,VAR ax,VAR … loop LP1
相关概念: 汇编语言——指令助记符,符号地址,标号, 汇编语言——指令助记符,符号地址,标号, 伪指令等语言元素的集合以及这些元素使用的 规则。 规则。 用汇编语言编写的程序叫汇编语言源程序 用汇编语言编写的程序叫汇编语言源程序。 汇编语言源程序。
在DOS状态下,调用EDIT编辑程序建立文件名为 DOS状态下,调用EDIT编辑程序建立文件名为 状态下 EDIT STR.ASM的汇编源程序。 STR.ASM的汇编源程序。 的汇编源程序 其屏幕显示如下图: 其屏幕显示如下图:
9
10
第二步:用MASM汇编生成目标文件 第二步:用MASM汇编生成目标文件
7
运行汇编语言程序的步骤
(1)用编辑程序建立扩展名为.ASM的汇编语言 用编辑程序建立扩展名为.ASM的汇编语言 建立扩展名为.ASM 源程序文件; 源程序文件; 用汇编程序MASM.EXE MASM.EXE将汇编语言源程序文件汇编成 (2)用汇编程序MASM.EXE将汇编语言源程序文件汇编成 用机器码表示的目标程序文件,其扩展名为.OBJ .OBJ; 用机器码表示的目标程序文件,其扩展名为.OBJ; 若在汇编过程中出现语法错误, (3)若在汇编过程中出现语法错误,根据错误信息提示 如位置、类型、说明), ),用编辑软件重新调入源程序进行 (如位置、类型、说明),用编辑软件重新调入源程序进行 修改。无错误时采用连接程序LINK.EXE LINK.EXE把目标文件转化成可 修改。无错误时采用连接程序LINK.EXE把目标文件转化成可 执行文件,其扩展名为.EXE .EXE; 执行文件,其扩展名为.EXE; 生成可执行文件后, DOS命令状态下直接键入文件 (4)生成可执行文件后,在DOS命令状态下直接键入文件 名就可执行该文件。 名就可执行该文件。
18
注释——以分号开头,可放在指令后,也可 注释——以分号开头,可放在指令后,也可 单独一行。 注意注解的写法。要写指令(段)在程 序中的作用,而不要写指令的操作。
例如:以下为同一条指令写的注释 1)MOV CX,100 ;传送100到CX 2)MOV CX,100 ;循环计数器置初值
显然,第二种写法要比第一种写法要好。
代码段
15
4.2 4.2 汇编语言的语句与格式
汇编语言的语句有两种: 汇编语言的语句有两种:
指令性语句——由8086指令助记符构成的语句 指令性语句——由8086指令助记符构成的语句 指示性语句——由伪指令构成的语句 指示性语句——由伪指令构成的语句
指令性语句的格式为: 指令性语句的格式为:
标号: 指令助记符 目的操作数,源操作数 ;注释 标号: 目的操作数,
17
语句的构成元素:
标号—— 标号——指令的符号地址,用来代表指令在存储器中的
地址。只能出现在指令性语句中,标号后应加上冒号。 地址。只能出现在指令性语句中,标号后应加上冒号。
名字—— 名字——段、过程、变量的名字,用来代表它们在存储
器中的地址。只能出现在指示性语句中,名字后不加冒 器中的地址。只能出现在指示性语句中,名字后不加冒 号。
指示性语句的格式为: 指示性语句的格式为:
名字 伪指令 操作数1,操作数2,…,操作数n 1,操作数 操作数1,操作数2, 操作数n ;注释
注:各部分之间至少要用一个空格作为分隔符。 各部分之间至少要用一个空格作为分隔符。
16
●指令性语句由CPU执行,每一条指令性语 指令性语句由CPU执行,每一条指令性语
汇编语言 源程序
ห้องสมุดไป่ตู้
汇编程序
机器语言 目标程序
源程序的编译程序
5
汇编语言程序设计与执行过程
输入汇编语言源程序 汇编(编译) 链接 调试 源文件 .ASM 目标文件 .OBJ 可执行文件 .EXE 最终程序
6
汇编语言的工作环境及上机步骤
硬件环境
目前8086汇编语言程序一般多在IBM PC/XT及其兼容机 目前8086汇编语言程序一般多在IBM PC/XT及其兼容机 上运行,要求机器具备基本配置即可以了。 上运行,要求机器具备基本配置即可以了。
22
3.变量 3.变量
变量——即内存中的存储单元或数据区。 变量——即内存中的存储单元或数据区。 变量名——是存储单元(数据区) 变量名——是存储单元(数据区)的符号地 址或名字。
变量也有三个属性: 变量也有三个属性:
段地址—变量所在段的段地址(Segment) 段地址—变量所在段的段地址(Segment) 偏移量— 偏移量—变量单元地址与段首地址之间的位移量。 类 型—有BYTE、WORD和DWORD三种。 BYTE、WORD和DWORD三种。
名字
标号
20
4.3 4.3 数据项与表达式
数据项包括常量 变量、标号及表达式。 数据项包括常量、变量、标号及表达式。 常量、 1.常量 1.常量
二进制数, 二进制数,以B结尾。如01001101B。 结尾。如01001101B。 十进制数, 85。 十进制数,如85。 十六进制数, 十六进制数,以H结尾。第1个数字为A-F时,前 结尾。 个数字为A 面应加0 面应加0,如0F160H。(也可不写) 160H 也可不写) 字符串:用引号括起来的1 个或多个字符 。 字符串:用引号括起来的 1 个或多个字符。 如 ‘ ERROR!’, ’a’, 汇编时被翻译成对应的ASCII ERROR!’ 汇编时被翻译成对应的 ASCII 码45H,52H,52H,4FH,52H,21H和61H。 H,52H,52H,4FH,52H,21H 61H
指令助记符——8086助记符、伪指令 指令助记符——8086助记符、伪指令 操作数——即指令的操作对象 操作数——即指令的操作对象
对指令性语句——0 对指令性语句——0,1,2个 对指示性语句——根据需要而定 对指示性语句——根据需要而定 操作数之间以逗号分隔 操作数可以是:寄存器、存储单元、常数或表达式 操作数可以是:寄存器、存储单元、常数或表达式 例如:AX,[DI+BX+10],200,16*8+TABLE,等等 – – – –