版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章:3.1 汇编语言源程序格式完整的汇编语言源程序由段组成一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点 源程序由语句序列构成data segment m1 db 5h m2 db 6hdata endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov al,06h mov bl,02h mul bl mov al,05h mul m1 mov al,03h mul al mov
2、ah,4ch int 21hcode endsend start第3章:3.1 汇编语言源程序格式所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内通常,程序还需要一个堆栈段 源程序由语句序列构成第3章:汇编语言的语句格式执行性语句执行性语句用于表达处理器指令(也称为硬指令),汇编后对应一条指令代码。由处理器指令组成的代码序列是程序设计的主体标号: 硬指令助记符 操作数,操作数 ;注释data segment m1 db 5h m2 db 6hdata endscode segment assume cs:code,ds:datastart: mov ax,data m
3、ov ds,ax mov al,06h mov bl,02h mul bl mov al,05h mul m1 mov al,03h mul al mov ah,4ch int 21hcode endsend start第3章:汇编语言的语句格式说明性语句说明性语句用于表达伪指令,指示源程序如何汇编、变量怎样定义、过程怎么设置等名字 伪指令助记符 参数,参数, ;注释data segment m1 db 5h ; 伪指令 m2 db 6h ; 伪指令data endscode segment assume cs:code,ds:data; 伪指令start: mov ax,data mov d
4、s,ax mov al,06h mov bl,02h mul bl mov al,05h mul m1 mov al,03h mul al mov ah,4ch int 21hcode endsend start第3章:硬指令与伪指令硬指令(Instruction)使CPU产生动作、并在程序执行时才处理的指令硬指令就是第2章学习的处理器指令,与具体的处理器有关、与汇编程序无关伪指令(Directive)不产生CPU动作、在程序执行前由汇编程序处理的说明性指令伪指令与具体的处理器类型无关,但与汇编程序有关。不同版本的汇编程序支持不同的伪指令 硬指令和伪指令采用易于记忆的符合表达,这就是助记符第3
5、章:标号、名字与标识符标号是反映硬指令位置(逻辑地址)和属性的标识符,后跟一个冒号分隔名字是反映伪指令位置(逻辑地址)和属性的标识符,后跟空格或制表符分隔,没有冒号标识符(Identifier)一般最多由31个字母、数字及规定的特殊符号(如 _、$、?、)组成,不能以数字开头。默认情况下,汇编程序不区别标识符中的字母大小写一个源程序中,每个标识符的定义是唯一的,还不能是汇编语言采用的保留字第3章:保留字保留字(Reserved Word)是汇编程序已经利用的标识符(也称为关键字),主要有:硬指令助记符例如:MOV、ADD伪指令助记符例如:DB、DW操作符例如:OFFSET、PTR寄存器名例如:
6、AX、CS预定义符号例如:data 汇编语言大小写不敏感第3章:操作数和参数处理器指令的操作数可以是立即数、寄存器和存储单元伪指令的参数可以是常数、变量名、表达式等,可以有多个,参数之间用逗号分隔第3章:注释语句中由分号“;”开始的部分为注释内容,用以增加源程序的可读性必要时,一个语句行也可以由分号开始作为阶段性注释汇编程序在翻译源程序时将跳过该部分,不对它们做任何处理第3章:分隔符语句的4个组成部分要用分隔符分开标号后用冒号,注释前用分号操作数之间和参数之间使用逗号分隔其他部分通常采用空格或制表符多个空格和制表符的作用与一个相同MASM支持续行符 “”第3章:例3.1 在屏幕上显示一段信息;
7、数据段(定义要显示的字符串)stringdbHello, Assembly !,0dh,0ah,$;代码段(显示字符串的程序)mov dx,offset stringmov ah,9int 21hHello, Assembly !程序功能第3章:3.1.2 完整段定义格式完整段定义利用SEGMENT和ENDS一对伪指令定义逻辑段同时需要配合ASSUME伪指令指明逻辑段是代码段、堆栈段、数据段还是附加段完整段定义的优势是可以指明逻辑段的定位、组合、类别等属性;而简化段定义只能采用系统默认的属性完整段定义和简化段定义的实质是一致的第3章:3.2 常量、变量和标号 汇编语言的数据可以简单分为常量和变
8、量常量可以作为硬指令的立即数或伪指令的参数,变量主要作为存储器操作数汇编语言语句中的名字和标号具有逻辑地址和类型属性,主要用做地址操作数,也可以作为立即数和存储器操作数本节将详细讨论语句中的参数和操作数、名字和标号,并引出相关的伪指令和操作符第3章:3.2.1 常量常量表示一个固定的数值,它又分成多种形式常数字符串符合常量数值表达式第3章:1. 常数指由10、16、2和8进制形式表达的数值,各种进制的数据以后缀字母区分,默认不加后缀字母的是十进制数十进制由0 9数字组成,以字母D(d)结尾(缺省情况可以省略)100,255D十六进制由0 9、A F数字组成,以字母H(h)结尾,以字母开头的常数
9、需要加一个前导064H,0FFH0B800H二进制由0和1两个数字组成,以字母B(b)结尾01100100B第3章:2. 字符串字符串常量是用单引号或双引号括起来的单个字符或多个字符其数值是每个字符对应的ASCII码值例如:d(等于64H)AB(等于4142H)Hello, Assembly !第3章:3. 符号常量符号常量使用标识符表达一个数值MASM提供等价机制,用来为常量定义符号名符号定义伪指令有“等价EQU”和“等号”:符号名 EQU 数值表达式符号名 EQU ;符号名 数值表达式EQU用于数值等价时不能重复定义符号名,但“”允许有重复赋值。例如:X= 7;等效于:X qeu 7X=
10、X+5;“X EQU X+5”是错误的第3章:4. 数值表达式数值表达式一般是指由运算符连接的各种常量所构成的表达式汇编程序在汇编过程中计算表达式,最终得到一个确定的数值,所以也是常量表达式的数值在程序运行前的汇编阶段计算,所以组成表达式的各部分必须在汇编时就能确定汇编语言支持多种运算符(表3.4)我们经常使用的是加减乘除( * / )例如:mov ax,3*4+5;等价于:mov ax,17第3章:3.2.2 变量 变量实质上是指内存单元的数据,虽然内存单元地址不变,但其中存放的数据可以改变变量需要事先定义才能使用变量定义(Define)伪指令为变量申请固定长度为单位的存储空间,并可以同时将
11、相应的存储单元初始化定义后的变量可以利用变量名等方法引用其中的数据,即变量的数值第3章:1. 变量的定义 变量定义的汇编语言格式为:变量名 伪指令 初值表变量名为用户自定义标识符,表示初值表首元素的逻辑地址,常称为符号地址。变量名也可以没有初值表是用逗号分隔的参数,主要由常量、数值表达式或“?”组成。其中“?”表示未赋初值多个存储单元如果初值相同,可以用复制操作符DUP进行定义:重复次数 DUP(重复参数)变量定义伪指令有DB、DW、DD等(表3.5)第3章:字节变量的定义DB(Define Byte)DB伪指令用于分配一个或多个字节单元,并可以将它们初始化为指定值初值表中每个数据一定是字节量
12、,存放一个8位数据:可以是0255的无符号数或是128127带符号数也可以是字符串常数实例字节变量定义实例;数据段Xdb a,-5db 2 dup(100),?Ydb ABC应用第3章:字节变量的应用mov al,X;此处X表示它的第1个数据,故ALadec X+1;对X为始的第2个数据减1,故成为6mov Y,al;现在Y这个字符串成为 aBC第3章:字变量的定义DW(Define Word)DW伪指令用于分配一个或多个字单元,并可以将它们初始化为指定值初值表中每个数据是字量,一个字单元可用于存放任何16位数据:一个段地址一个偏移地址两个字符065535之间的无符号数3276832767之间
13、的带符号数字变量定义实例;数据段countdw 8000h,?,ABmaxintequ 64hnumberdw maxintarraydw maxint dup(0)第3章:双字变量的定义DD(Define Double word)DD伪指令用于分配一个或多个双字单元,并可以将它们初始化为指定值初值表中每个数据是一个32位的双字量:可以是有符号或无符号的32位整数也可以用来表达16位段地址(高位字)和16位的偏移地址(低位字)的远指针varddDD 0,?,12345678hfarpointDD 00400078h第3章:2. 变量的应用变量具有存储单元的逻辑地址程序代码中通过变量名引用其指向
14、的首个数据通过变量名加减位移量存取以首个数据为基地址的前后数据 例题3.2 变量的定义和应用第3章:例题3.2 变量的定义 ;数据段bvar1db 100,01100100b,64h,d;字节变量:不同进制表达同一个数值,内存中有4个64Hminint= 5;符号常量:minint数值为5,不占内存空间bvar2db -1,minint,minint+5;内存中数值依次为FFH,5,0AHdb ?,2 dup(20h);预留一个字节空间,重复定义了2个数值20Hwvar1dw 2010h,4*4;字变量:两个数据是2010H、0010H,共占4个字节wvar2dw ?;wvar2是没有初值的字
15、变量第3章:例题3.2 变量的定义(续)dvardd 12347777h,87651111h,?;双字变量:2个双字数据,一个双字空间abcdb a,b,c,?;定义字符,实际是字节变量maxintequ 0ah;符号常量:maxint10stringdb ABCDEFGHIJ;定义字符串:使用字节定义DB伪指令crlfsdb 13,10,$;回车符0DH、换行符0AH和字符$24Harray1dw maxint dup(0);10个初值为0的字量,可以认为是数组arraydb 2 dup(2,3,2 dup(4);6个字节内容依次为:02 03 04 04 02 03 04 04第3章:例题
16、3.2 变量的应用;代码段mov dl,bvar1;DL100dec bvar2+1;bvar2+14mov abc3,dl;abcabcdmov ax,word ptr dvar0;取双字到DX.AXmov dx,word ptr dvar2add ax,word ptr dvar4;加双字到DX.AXadc dx,word ptr dvar6mov word ptr dvar8,ax;保存双字的求和结果mov word ptr dvar10,dx第3章:例题3.2 变量的应用(续)mov cx,maxint;CX10mov bx,0;BX0again:add stringbx,3;stri
17、ng每个数值加3inc bxloop again;循环lea dx,abc;从abc开始mov ah,9;09H号DOS功能调用int 21h;显示结果:abcdDEFGHIJKLM第3章:3. 变量的定位汇编程序按照指令的先后顺序一个接着一个分配存储空间,按照段定义伪指令规定的边界定位属性确定每个逻辑段的起始位置(包括偏移地址)定位伪指令ORG控制数据或代码所在的偏移地址ORG 参数ORG伪指令是将当前偏移地址指针指向参数表达的偏移地址。例如:ORG 100h;从100H处安排数据或程序ORG $+10;偏移地址加10,即跳过10个字节空间汇编语言程序中,符号“$”表示当前偏移地址值第3章:
18、3.2.3 名字和标号的属性名字和标号是用户自定义的标识符。名字指向一条伪指令,标号指向一条硬指令。名字和标号一经使用便具有两类属性: 逻辑地址名字和标号对应存储单元的逻辑地址,含有段地址和偏移地址; 类型变量名的类型可以是BYTE(字节)、WORD(字)和DWORD(双字)等;标号、段名、子程序名的类型可以是NEAR(近)和FAR(远),分别表示段内或段间调用汇编程序提供有关的操作符,以便获取这些属性值第3章:1. 地址操作符地址操作符取得名字或标号的段地址和偏移地址 将括起的表达式作为存储器地址指针 $当前偏移地址 :段前缀,采用指定的段地址寄存器OFFSET 名字/标号返回名字或标号的偏
19、移地址SEG 名字/标号返回名字或标号的段地址第3章:2. 类型操作符类型操作符对名字或标号的类型属性进行设置类型名 PTR 名字/标号其中可以是BYTE、WORD、DWORD(依次表示字节、字、双字)等,或者是NEAR、FAR(分别表示近、远),还可以是由结构、记录等定义的类型对变量:LENGTH操作符获知某变量名指向多少个数据项SIZE操作符获知它共占用多少字节空间(书上有错误lengthof和sizeof是错的)数据段v_byteequ this byte;v_byte是字节类型,与变量v_word的地址相同v_worddw 3332h,3735h;v_word是字类型的变量targetdw 5 dup(20h);分配数据空间2510字节crlfdb 0dh,0ah,$flagdb 0n_pointdw offs
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届辽宁省盘锦市双台子区一中学初三(数学试题理)4月第一次综合练习试卷含解析
- 护理课件制作软件的数据分析优化
- 2026年大学大一(机械电子工程)液压与气压传动阶段测试题及答案
- 遂宁职业规划教学方案
- 英语专业就业方向解析
- 2025年前台防疫接待礼仪练习题
- 护理学导论急救护理技能
- 放飞想象 赏析习作-六上“变形记”习作教学
- 物资出入库、盘点管理制度
- 2026四年级数学下册 三角形的分类按边分
- 学校教室护眼灯投标方案
- 畜禽舍建筑设计指南
- 光伏发电设备检修维护(技师)职业技能鉴定备考试题库(含答案)
- 第二节 物质的密度(教学设计)2024-2025学年北师大版八年级物理下册
- 《频率与概率》课件
- 病理学与病理生理学(第5版) 课件 第一章 疾病概论
- 五年级下册字谜故事带答案
- 《平凡的世界》中不平凡的人生8600字(论文)
- 中药学重点完整版本
- 海洋学-第5章-潮汐
- 2024年上海市高考语文真题现代文二《斑鸠》简析及相关常规题型归纳
评论
0/150
提交评论