第四章汇编程序设计-2_第1页
第四章汇编程序设计-2_第2页
第四章汇编程序设计-2_第3页
第四章汇编程序设计-2_第4页
第四章汇编程序设计-2_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 宏汇编语言程序设计汇编语言编程产生可执行文件过程EDIT *.ASM MASM *.OBJ LINK *.EXE 编辑 源程序 汇编 浮动目标程序 连接 可执行程序源程序:用汇编语言编写的程序,每条指令是其基本 语句。汇编语言特点: 面向机器,与硬件紧密相关。 编制的程序简洁,高效,实时性好,即省内 存,运行快。8086汇编程序:小汇编程序ASM或宏汇编程序MASM汇编语言程序格式:例4l 在屏幕上显示并打印字符率“This Is a sample program” DATA SEGMENT;数据段 DA1 DB This Is a sample program DB 0DH,0AH,

2、 DATA ENDS STACK SEGMENT ST1 DB 100 DUB(?) STACK ENDS CODE SEGMENT;代码段 MAIN PROC FAR ASSUME CS:CODE,DS:DATA,SS:STACK ORG 1000 START: PUSH DS;正常返回所需段地址及偏移地址 。 RET MAIN ENDP CODE ENDS END START4-1 汇编语言程序格式一 指令性语句与机器指令对应,*.EXE执行时CPU处理的操作格式: 标号:指令助记符标号:指令助记符 操作数,操作数;注释操作数,操作数;注释标号标号:符号地址,后跟“:”,使用英文大小写字母

3、阿拉伯字母和特殊字符,第一个非数字,31个助记符助记符:与指令对应,不可省。操作数操作数:参加运算的数据,用常数、变量、标号、寄 存器名或表达式。注释:说明一指令或程序功能。可省略。用“;”隔 离。二、伪指令语句 无对应的机器指令,是汇编程序汇编 源程序进行处理的操作功能: 数据定义,存储区分配,段定义,段分配,指示 程序结束等功能。伪指令语句的格式为: 名字名字 伪指令指示符伪指令指示符 操作数,操作数;注释操作数,操作数;注释 名字:赋予伪指令的名称,符号地址,名字后不允许 带冒号“:”,可省略。名字常为变量名、段 名、过程名、符号名等。指示符:汇编程序MASM规定的符号,各种定义语句后

4、详述。操作数:按伪指令要求可有可无,操作数可以是常数、 变量、字符串、表达式等。 注释:功能和使用与指令性语句相同。三、数据项常数、变量和标号的三种基本数据项。 1常数二进制 ( B)、八进制 (Q或O) 、十进制(D) 、十六进制(H) 、 ASCll码字符串(用单引号abcd 。 2变量 常指存放在M中的数值,程序运行中可修改。三个属性: (1)段值(SEGMENT):段基址。 (2)段偏移地址(OFFSET):与段首址之间的地 址偏移字节数。 (3)类型(TYPE):变量中每个元素包含的字节 数,即长度属性。有字节变量(BYTE)、字 变量WORD)及双字变量(DWORD)等。 变量 A

5、BC data1 data2标号 PROG code1 code23标号指令语句的地址符号,可作为JMP指令和调用指令CALL的目标操作数,以确定程序转向的目标地址。三个属性:(1)段值(SEGMENT):标号所在段的段基址。(2)段内偏移地址(OFFSET):偏移地址(3)类型:指转移指令中标号可转移距离,即距离 属性。近标号(NEAR),远标号(FAR)。NEAR指针长度2字节FAR -指针长度4字节4-2 MASM中的表达式运算对象运算符表达式 汇编运算结果为语句中操作数运算对象:常数、变量、标号结果操作数:常数或地址(变量或标号)变量 ABC data1 data2标号 PROG co

6、de1 code2运算符运算符一 算术运算符注意: 除法视运算结果取不同符号(商-/,余数-MOD) 对地址“+”“-”运算符有意义,但不同段地址加减也无意义 运算对象和结果都为整数二 逻辑运算符注意:与指令助记符有相同的形式,但运算时间严格区分例:AND DX,PORT AND 0FEH逻辑运算符汇编时计算产生一立即数指令助记符程序执行时运算三 关系运算符注意:所连接两操作数必为两数据或同一段内M地址运算结果:真0FFFFH,假0常与其他运算符组合使用 例:MOV BX,(PORT LT 3) AND 20 OR (PORT GE 3) AND 30如:PORT3 则 MOV BX,20 P

7、ORT3 MOV BX,30四 数值返回运算符(分析运算符) 功能:把存储器地址操作数分解成它们的组成部分。 SEG ABC 得到ABC段地址 OFFSET ABC 得到ABC偏移地址 TYPE 分析变量类型(字节) 表4-2 标号类型属性(距离) LENGTH,返回变量单元数 SIZE 返回变量总字节数M1 DW 100 DUP (?)MOV AX,LENGTH M1 ;AX=100MOV CX, SIZE M1;CX=200MOV BX, TYPE M1;BX=2五 修改属性运算符(综合或合成运算符)使已定义变量标号在以后使用中获得与定义不同的属性。 格式:类型/距离 PTR 变量/标号左

8、边的属性赋予右边格式:变量/标号 EQU THIS 类型/距离右边的属性赋予左边HIGH/LOW(字节分离运算符) 对象:数据或地址表达式 HIGH-分离出高字节 LOW -分离出低字节4-3 伪指令语句(指示性语句1数据定义语句定义存储器单元伪指令格式1:变量名 助记符 操作数,操作数,格式2:变量名 助记符 n DUP (操作数,操作数,)助记符:DB定义字节 DW定义字DD定义双字 DQ定义四字DT定义十字节变量名符号表示,可省略。作其后第一字节符号地址。操作数常数,字符串,变量,标号,表达式n DUP ( )-n为整数,表示括号中操作数重复次数。注意: 定义多字节字符串用DB,DW只允

9、许包含两个字符。 定义不确定值变量,以保留存储空间存放运算结果。 用DW和DD将变量或标号逻辑地址存入存储器。例:例:4-21 DA1 DB 10H,52H DA2 DW 1122H,34H DA3 DD 5*20H,0FFEEH 4-22 FIRST DB HELLO SECOND DW OK 4-23 M1 DB ? M2 DW 0D55H,?,? 4-24 ONE DB 5 DUP (0) TWO DW 10 DUP (0) THREE DB 4 DUP (1,2 DUP (20H)2表达式赋值语句 1 格式:符号 EQU 表达式对右边表达式定义符号名,一经定义同程序中不能重新定义。 2

10、 等号语句 =与EQU功能相同,区别在于左边符号允许重新定义,但须用PURGE语句解除对某标号的赋值。C1 EQU CALL PURGE C13段定义、分配语句1段定义语句 按段组织和使用存储器格式:段名 SEGMENT 定位类型 组合 分类名. 段名 ENDS定位类型表示此段起始边界要求,即对段首地址定位。此参数缺省,则定位于节边界。 PARA定位于节的整数边界 BYTE-定位于存储器任何字节 WORD-定位于字边界 PAGE-定位于页边界组合类型:告诉连接程序本段与其他段的关系。NONE本段与其他段在逻辑上不发生关系。PUBLIC连接程序把几个模块的同名段相邻地连接成一个逻辑段,次序有连接

11、命令指定,高到低。类别:以 括起,以便连接时把同类别的段集中在一起。2 段分配语句格式:ASSUME CS:段名,DS:段名,SS:段名,ES:段名功能:-定义4个逻辑段,指明段与段寄存器的关系。段名:-必须是SEGMENTENDS定义过的。ASSUMENOTHING取消前面ASSUME指定的段寄存器。四个段不一定全部定义,代码段和数据段必须定义。 ASSUME只是指定某段分配给何寄存器,并不能将段地址装入段R.仅CS在分配时自动装入。四 过程定义语句格式:过程名 PROC 属性 . RET N过程名 ENDP过程名三属性:段属性1 段基地址 2 偏移地址属性 3距离属性RET N返回后自自栈

12、顶开始有N个字节作废一个RET可放任何位置,多个RET说明过程有多个出口。嵌套调用被调用过程中又调用其他过程。递归调用被调用过程中又调用过程本身。调用过程时注意保护退出时注意恢复。五 程序开始和结束语句1 NAME程序名为源程序目标模块赋名 功能置于程序开始,则在输出源程序列表文件时,将在每页开头打出程序名.省略则打印源文件名。2 TITLE 文本名 文本名赋予目标模块 功能同NAME3ORG 表达式 功能给程序设置地址指针,指定下个语句起始偏移地址。 表达式给定偏移地址,结果为正整数。无ORG语句时,段地址依此类推确定。 ORG可放于任意位置。4 END 标号名标记汇编程序结束 END在源程

13、序最后一行 每个源程序只有一个END七外部伪指令及对准伪指令1 外部伪指令用于程序的多个模块间共享某些程序和数据 PUBLIC 名称,名称,;定义本模块中可供共享的变量标号常数 EXTRN 名称:类型,名称:类型;调用共享2 对准伪指令 EVEN ;使下一语句的地址调整为偶地址3 LABLEL 给下一语句中已定义变量或标号另取一名字,并可重定义类型和属性。使同一变量或标号在不同地方被调用时可采用不同的名字,具有不同的属性。格式:名称 LABEL 类型属性名称下行语句中变量或标号的别名使用: 与变量连用属性可修改BYTE,WORD 与标号连用属性可修改FAR,NEAR 4-4 DOS功能调用DO

14、S:Disk Operating SystemDOS功能文件管理:磁盘上文件建立、文件删除、文件读写和文 件检索。设备管理:对显示器、键盘、打印机、磁盘及异步通信等 I/O设备管理。ROM BIOS:一部分固化于系统内存ROM中的部分管 理软件。(FE000HFFFFFH)用户可调用子程序: DOS 2.087个,DOS3.098 个,DOS6.2100多个调用方式:软件中断调用DOS软件中断调用BIOS中断调用,接口控制功能模块用户常用中断调用DOS系统功能调用:即INT 21H中断调用。几乎包括整个系统功能用户使用简单,无须了解I/O设备的特性及接口要求。用法:1 系统功能号 AH;2 入

15、口参数 指定寄存器 ;3 INT 21H ; 4 由出口参数分析调用执行情况常用常用DOS功能表功能表功能号n AH置入口参数执行INT 21H分析出口参数INT 21的使用方法:例:通过人机对话从键盘输入一字符串,存入BUFIN为首地址的内存区,并在显示器显示该字符串。内存区长度20H实际输入字符串长度输入字符1输入字符2:输入字符n回车符BUFINBUFIN1BUFIN2BUFINI显示提示 DO YOU WANT TO INPUT STRING?(Y/N) 等待键盘输入应答 Y/N键盘输入Y显示提示 PLEASE INPUT STRING键盘输入字符串存入BUFIN计算输入字符串长度,并

16、将字符串结尾加显示输入的字符串返回DOSNDONE功能号功能号AH 09H01H09H0AH09H4CHDATASEGMENTSTRING1DB DO YOU WANT TO INPUT DB STRING?(Y/N),0DH,0AH,STRING2DB PLEASE INPUT STRING. DB 0DH,0AH,BUFIN DB 20H,? ;20H为设置长度,?为实际输入长度BUFINI DB 20H DUP(?) ;实际输入的字符串存放区DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART PROC FARBEGING:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX ;定义使用DS,ES LEA DX,STRING1 MOV AH,09H INT 21H ;显示STRING1提示 MOV AH,01H INT 21H ;从键盘输入1个字符至ALCMP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论