汇编语言程序格式.ppt
《汇编语言程序格式.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序格式.ppt(39页珍藏版)》请在装配图网上搜索。
1 第四章汇编语言格式内容 一 汇编语言上机过程二 汇编语言程序结构三 指示性语句 2 3 一 汇编语言上机过程D EDITABC asmD MASMABC 有语法错 回EDIT下改该程序D LINKABC 有错 回在EDIT下改程序D ABC运行结果错 回EDIT下改程序或在DEBUG下调试 找原因 D DEBUGABC exe 4 二 汇编语言程序结构一 程序结构二 语句结构 5 一 程序结构程序由数条语句构成 每条语句占一行 指令性语句 指令语句 指示性语句 伪指令语句 分段结构程序按段编写 与8088内存分段编址相对应 每段由伪操作SEGMENT开始 由ENDS结束 程序最后为END结束语句 后跟一启动地址 启动地址指示程序开始执行的第一条语句 程序中设有返回DOS的功能 使程序执行完后返回DOS系统的命令接受状态 程序中用到内存操作数时 应按操作数的寻址方式 给相应的段寄存器赋值 汇编语言程序结构例一movs asm 实现数据传送功能aaSEGMENT 数据段1str1DB Hello aaENDSbbSEGMENT 数据段2str2DB6dup bbENDSccSEGMENT 代码段ASSUMECS cc DS aa ES bbstart CLDMOVAX aaMOVDS AXLEASI str1MOVAX SEGstr2MOVES AXMOVDI OFFSETstr2MOVCX 6REPMOVSBMOVAH 4CHINT21H 返回DOSccENDSENDstart 指示程序结束 6 1 名字项据语句功能的不同 名字项可用来表示 段名 变量名 标号 过程名以及常量名等 二 语句结构 7 名字项用一个符号表示 对符号的规定 由字符A Z a z 0 9及符号 下划线 等组成 最长31个字符 超出部分忽略 不能用数字打头 以免与十六进制数相混 不使用汇编程序中的保留字 如指令的助记符等 对定义的符号不区分大小写 8 2 助记符项助记符可以是指令 伪操作中的助记符 对于指令 汇编程序将其翻译成机器语言指令 MOVAX 100 B80001 对于伪操作 汇编程序据其要求的功能进行处理 dataSEGMENT data与一段值对应stringDB Tsinghua string与一内存地址对应 9 3 操作数项操作数给出参与操作的数或数所在的地方 操作数多于一个时 用逗号分开 操作数可以是常数 寄存器 存储器操作数 标号名 过程名或表达式等 10 11 12 4 注释项由分号引出 用来说明语句或程序的功能 汇编程序对分号后的内容不做处理 作用 注释程序 增强程序可读性 可放在语句最前 暂时注释某语句 调试程序用 例 MOVAH 2 显示提示信息 MOVDL A INT21H 13 指示性语句与指令性语句 指令性语句是用指令系统中的指令构成的语句 例MOVAX BX指示性语句是指示汇编程序进行汇编的操作 例MOVAX 4 8中的 codeSEGMENT中的SEGMENTMOVBX OFFSETstring中的OFFSET 14 指示性语句与指令性语句区别一个程序经汇编 连接和装入内存后 在执行程序之前 指示性语句的功能已经完成 故又称伪操作 而指令性语句的功能尚未完成 需控制CPU去执行 才能完成 15 常用伪操作介绍一 程序开始和结束二 段定义三 变量定义四 ASSUME语句五 表达式中的操作符六 过程定义七 等值定义 16 一 模块定义和程序结束伪操作1 NAME和TITLE伪操作格式NAME模块名格式TITLE模块名在源程序开始可用NAME或TITLE为模块命名 模块名的作用是指示给连接程序进行连接用 源程序中可无模块定义 此时源文件名作为模块名 17 2 END伪操作格式END启动地址作用是指示源程序到此结束 汇编程序对END之后的语句不进行处理 程序中所有有效语句应放在END语句之前 源程序中必须有END结束语句 汇编程序对无END语句的源程序不进行处理 只给出无END语句错误信息 18 二 段定义伪操作格式段名SEGMENT 段名ENDS段定义由伪操作SEGMENT开始 ENDS结束 其中 SEGMENT和ENDS必须成对出现 且语句前必须有段名 段名必须相同 SEGMENT和ENDS语句之间可以有指令和其他伪操作 表示存放在该段内存的变量 指令或其他伪操作对该段内存的处理程序中可以定义多个段 程序经汇编 连接及装入内存后 段名为一具体的段值 19 三 变量定义伪操作格式变量名类型助记符操作数 操作数 用来定义程序中所用的内存操作数 其中变量名指示内存操作数的地址 符号地址 类型助记符指示内存操作数的类型 字节 字 双字等 操作数指示内存操作数的内容汇编程序将定义的操作数 按其类型分配内存单元数 顺序存入变量名指向的内存单元中 常用的类型助记符有 DB指示其后的操作数为字节类型DW指示其后的操作数为字类型DD指示其后的操作数为双字类型 20 例1 定义赋初值的变量dataSEGMENTxxDB1 1 0fcHyyDW1 1 0fcHzzDD1 1 0fcHdataENDS 21 例2 定义字符串变量 只能用DB定义 dataSEGMENTstr1DB TsingHua str2DB INPUT 0dH 0aH dataENDS 22 操作数可以是用常量 表达式和 表示 常量和表达式表示内存操作数的初始值 其值应在其定义的类型范围内 否则汇编出错 例aaDB270bbDW80000用 表示不置初始值的内存操作数 例ccDB 可用DUP复制操作符定义相同的操作数 其格式为重复次数DUP 操作数 例eeDB3DUP 4 等价于eeDB4 4 4 23 四 ASSUME伪操作格式ASSUME段寄存器 段名 段寄存器 段名 其中段寄存器为CS DS ES SS中的一个段名为用伪操作SEGMENT定义过的段名例ASSUMECS cc DS aaASSUME伪操作的作用指示汇编程序指令中用到的标号 过程及变量所在的段 其中对标号 过程必须用CS段寄存器指示对变量可用CS DS ES SS段寄存器指示 24 若未用ASSUME语句指示指令中用到的标号 过程和变量所在的段 汇编程序将给出错误信息 ASSUME语句只起指示作用 并无实际的操作 在程序中引用定义的变量做内存操作数时 需按寻址方式用传送指令 如MOV 给相应的段寄存器赋值 25 26 五 表达式及表达式中的操作符 表达式由常量 标号 变量和一些操作符构成 汇编程序对表达式进行运算后 得到一个确定的数值 再把这个数值汇编到指令中 据表达式所表示的内容 分数字表达式 地址表达式 表达式是指令或伪操作的操作数 表达式中的操作符由汇编程序完成例MOVAX 12 4 MOVAX 8 数字表达式LEABX string 4 地址表达式 27 表达式中的操作符有以下几类 1 算术运算符 MOD 2 逻辑运算符 AND OR NOT XOR 3 关系运算符 EQ NE GT GE LT LE 真 FFFFH 假 04 数值返回操作符 SEG OFFSET 5 类型操作 PTR 6 地址记数器 28 例 1 算术运算符 MOD 取余数 MOVAX 6 8 MOVAX 482 逻辑运算符 AND OR NOT XOR MOVAX 80hOR70h MOVAX 0F0h3 关系运算符 EQ NE GT GE LT LE 真 FFFFH 假 0MOVAX 1GE2 MOVAX 0 29 4 数值返回操作符 SEG OFFSET SEG取符号地址的段地址例MOVAX SEGyyOFFSET取符号地址的偏移地址例MOVBX OFFSETyy bbSEGMENTyyDB6dup bbENDSccSEGMENTASSUMECS cc DS aa ES bbstart CLDMOVAX SEGyyMOVES AXMOVDI OFFSETyyMOVCX 6 ccENDSENDstart 30 aaSEGMENTxxDB Hello aaENDSbbSEGMENTyyDB6dup bbENDSccSEGMENTASSUMECS cc DS aa ES bbstart CLDMOVAX aaMOVDS AXLEASI xxMOVAX SEGyyMOVES AXMOVDI OFFSETyyMOVCX 6REPMOVSBMOVAH 4CHINT21HccENDSENDstart 31 32 六 过程定义伪操作格式过程名PROC类型 过程名ENDP过程定义由伪操作PROC开始 ENDP结束 其中 PROC和ENDP必须成对出现 且语句前必须有过程名 过程名必须相同 PROC和ENDP语句之间为子程的指令序列 程序中可以定义多个过程 程序经汇编 连接及装入内存后 过程名为一具体的内存地址 指示子程入口 33 过程名常用作CALL调用指令的操作数 子程的最后安排RET返回指令 使执行完子程后能返回调用处 过程有两种类型 NEAR和FAR无类型项时 默认为NEAR类型 当过程与调用指令不在同一段时 应将过程定义为FAR类型 过程类型决定子程中RET的返回类型 34 35 七 等值定义伪操作格式符号名EQU需等值的表达式作用是用符号名等值指定的表达式其中 表达式可以是任何有效的操作数汇编时用语句中的表达式代替程序中符号所在的地方 应用 1 定义符号常量 方便修改程序 2 某表达式多次出现时 用等值伪操作可以方便编程 36 八 数值回送操作符TYPE LENGTH SIEE OFFSET SEG5种 把一些特征或存贮器地址的一部分作为数值回送 TYPE格式 TYPEvariable变量或label标号回送该变量的以字节数表示的类型 DB为1 DW为2 DD为4 DQ为8 DT为10 回送标号类型数值 NEAR为 FAR为 2 例 ARRAYDW1 2 3ADDSI TYPEARRAY汇编程序其形式 ADDSI 2 37 LENGTH格式 LENGTHvariable对于变量中使用DUP 汇编回送分配给变量单元数 其他情况回送1 例 FESSDW100DUP 0 对于MOVCX LENGTHFEES汇编程序将其形式 MOVCX 100其他情况 例 ARRAYDW1 2 3对于指令MOVCX LENGTHARRAY汇编程序将使其形式为 MOVCX 1例 TABLEDB ABCD 对于指令MOVCX LENGTHTABLE汇编程序使其形式为 MOVCX 1 38 SIZE格式 SIZEvariable回送分配给该变量的字节数LENGTH TYPE例 FEESDW100DUP 0 MOVCX SIZEARRAY将形成 MOVCX 200例 TABLEDB ABCD MOVCX SIEETABLE将形成 MOVCX 1例 ARRAYDW1 2 3MOVCX SIEEARRAY形式 MOVCX 2LENGTH TYPE 2 39 小小结 TYPE变量的返回值是类型的字节数 DB为1 DW为2 DD为4 DQ为8 DT为10 TYPE标号的返回值是 NEAR为 1 FAR为 2 LENGTH变量返回 DUP分配的单元数 对于其他情况则返回1 SIZE返回值是 LENGTH和TYPE值的乘积 即变量的字节数- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序 格式
![提示](https://www.zhuangpeitu.com/images/bang_tan.gif)
关于本文