欢迎来到天天文库
浏览记录
ID:18859461
大小:205.50 KB
页数:26页
时间:2018-09-25
《第4章 汇编语言程序设计》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第四章汇编语言程序设计(assemblylanguageprogramming)§4.1汇编语言(assemblylanguage)一.概述汇编语言:一种符号语言,它用助记符表示指令的操作码和操作数,用标号或符号代表地址、常量和变量,与机器语言几乎一一对应汇编:把汇编语言源程序翻译成机器语言目标程序的过程汇编语言源程序手工汇编或汇编程序机器语言目标程序汇编程序:用来完成汇编工作的程序,有小汇编ASM宏汇编MASM动态调试程序DEBUG二.汇编语言的语句格式:[名称]指令助记符[操作数][;注释]带方
2、括号的项有时可没有,注释项完全可以没有每个部分用空格分开每行最多可有132个字符,但最好不要超过屏宽80语句可分成指令性语句和指示性语句(伪指令语句)指令性语句汇编后可生成机器码[标号:]指令助记符[操作数][;注释]指示性语句指示汇编程序处理一些工作[名称]伪指令(指示符)[操作数][;注释]1.名称(或称标识符)给指令或存储单元地址起的名字,由字母、数字、字符组成字母:A~Z,a~z数字:0~9字符:可打印+-*/=()[]〈〉;.'’,_:?@$&(非打印空格制表符TAB回车换行)(界符:,;
3、:.()[]〈〉+-*/=?_@&$'’界符用来表示某个标志的结束)·数字不能作名称的第一个字符,圆点.仅能作第一个字符·保留字不能作标识符($、?是保留字,与其它字符组合除外)·名称最长为31个字符·当名称后跟冒号,表示该名称是其后指令的标号,代表该指令的开始地址,其他指令可以用该标号作为转移地址·当名称不跟冒号,它可能是标号或变量名,伪指令前的名称不跟冒号冒号隐含NEAR属性,例:供段内调用写成OUTPUT:OUTDX,AL供段间调用写成OUTPUTOUTDX,AL2.指令助记符8086/808
4、8指令,也可以是伪指令,如果指令有前缀(LOCK、REP等)则前缀和指令用空格分开3.操作数指令执行的对象,可能有一、二个或没有名称指令助记符操作数注释RET;返回(无操作数)COUNT:INCCX;CX加1(1个操作数)MOVAL,BL;AL¬BL(2个操作数)伪指令可有多个操作数COSTDB3,4,5,6,7,8;(6个操作数,用逗号分开)操作数可以是常数、寄存器名、标号、变量、表达式,MOVAX,[BP+4];(第二个操作数为表达式)4.注释可选项,使程序易读,汇编时不作处理注释前面要加分号,
5、它可位于操作数之后,也可位于行首三.常量与变量1.常量,也叫常数,没有属性的纯数,汇编时已确定的值·数字常量为0~65535中的数(16位寄存器使用,伪操作可定义32位),进制加后缀说明,十进制加D(可省),二进制加B,八进制加Q,十六进制加H,若十六进制第一位为字母,则前头应加0·字符和字符串叫串常量,是ASCII码字符串,必须加单(或双)引号例:‘A’,“ABC”,汇编后变成41H,414243H2.变量,用于表达数值(或串)的标识符,有三个属性①段属性(SEGMENT)②偏移地址属性(OFFS
6、ET)③类型属性(TYPE),用DB、DW、DD定义§4.2伪指令(pseudo-instruction)一.符号定义伪指令1.等值EQU格式:符号名EQU表达式用来给符号定义一个值,程序中出现该符号就用其值代替,EQU只能定义一次DATAEQU1234;代表一个数XYZEQUALPHA[SI];代表一个地址2.等号=格式:符号名=表达式意义与EQU一样,但程序中可重新定义符号的值EMP=6;EMP代表6EMP=EMP+1;EMP现在代表73.解除PURGE格式:PURGE符号名(符号1,符号2,…
7、…,符号n)用于解除所定义的符号使该符号在以后的定义中有效例:原定义TABEQU5可用PURGETAB来解除然后可重新定义TABEQU10二.数据定义伪指令用于预置存储器或定义变量1.定义字节DB格式:[变量名称]DB表达式例:DATA1DB2,3,4,5;从DATA1单元开始存放4字节数据2.定义字DW格式:[变量名称]DW表达式例:TABDW1234H;TAB单元内容为34H,TAB+1单元内容为12H3.定义双字DD格式:[变量名称]DD表达式每个数据二字(四字节)低位部分在低地址,高位部分在
8、高地址·用DB/DW/DD定义的数每行不得超过16项,超过16项必须换行DB/DW/DD用法<1>SUMDB?;给SUM单元分配一个字节,内容未定<2>TABDB20DUP(0);给TAB开始单元分配20字节,内容为0<3>TIMEDW100DUP(?);给TIME开始单元分配100字,内容未定<4>ADDRDDTABLE;TABLE的地址(双字)给ADDR100H01101H02102H03103H04104H00105H01106HA2107H13┇例:DATAS
此文档下载收益归作者所有