- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理第4章 汇编程序设计
微机原理及应用 第 4章 指令系统 主要内容 学习目的 1.掌握汇编语言的格式; 2.熟练汇编语言编程; 4. 1 汇编语言源程序格式语法 机器语言:机器能识别并执行,称目标程序,是二进制码。 汇编语言(Assemble Language) :用指令助记符、符号地址、标号等书写的语言。 汇编语言源程序:用汇编语言编写的程序。 汇编:汇编语言源程序 ?目标程序 4.1 汇编语言源程序 4. 1 汇编语言源程序格式语法 4. 1 汇编语言源程序格式语法 4.1.1 汇编语言源程序的结构 4. 1 汇编语言源程序格式语法 4.1.2 汇编语言的语句与格式 4.1.2 汇编语言的语句与格式 4.1.2 汇编语言的语句与格式 4.1.2 汇编语言的语句与格式 4.1.3 数据项与表达式 4.1.3 数据项与表达式 4.1.3 数据项与表达式 4.1.3 数据项与表达式 4.1.3 数据项与表达式 4.1.3 数据项与表达式 4.1.3 数据项与表达式 4.1.3 数据项与表达式 4.1.3 数据项与表达式 4.1.3 数据项与表达式 4.1.3 数据项与表达式 4.1.3 数据项与表达式 4.2 指示性语句-伪指令 用于定义变量,即内存单元或数据区。数据定义伪指令的格式为: 变量名 数据定义伪指令 操作数,操作数,… 常用的数据定义伪指令有如下几种: DB 定义字节 DW 定义字 DD 定义双字 操作数可以是常数、变量或表达式 例2:操作数可以是字符串,例如 STR DB ‘HELLO’ 汇编后的情况如图: 操作数?用来保留存储空间,但不存入数据. 例3:ABC DB 0,1,2,3,4,’OK’,’$’ RSV DW ?,?,?,?,?,?,?,? 复制操作符DUP: 重复的数据可以使用复制操作符DUP,如上面RSV亦可写成: RSV DW 8 DUP(?) 若操作数中若使用$,则表示的是地址计数器的当前值。 例: TABLE DB 10 DUP(?) BUFFER DW TABLE,$+3 设TABLE的偏移地址为0080H,则汇编后如下图所示: 把一个表达式用一个符号表示,以后凡出现该表达式的地方都可用这个符号表示。类似于C语言中的#define。 符号定义伪指令有两种:EQU,= 例:FIVE EQU 5 COUNT EQU CX TEN EQU 10 DIST = BYTE PTR[SI+BP] GOTO = JMP … MOV AX, TEN MOV CX, COUNT ADD DIST, FIVE DIST = WORD PTR[SI+BP+1] ADD DIST, AX GOTO LABEL 汇编语言程序是按段来组织程序和数据的。 和存储器的物理段相对应,汇编语言程序中的段称为逻辑段。汇编连接后被映射到物理段中。 三类段:代码(程序)、数据、堆栈 段定义伪指令:SEGMENT、ENDS、ASSUME、ORG 定义一个段的基本格式: 段名 SEGMENT [定位类型][组合方式][类别] 汇编语言语句 段名 ENDS 这两个伪指令总是成对出现,二者前面的段名应一致。SEGMENT说明了一个段的开始,ENDS说明了一个段的结束。 对数据段和堆栈段,段中的语句一般是变量定义。对代码段则是指令语句。 如: data SEGMENT 指令语句 data ENDS ASSUME伪指令 在代码段中,还必须明确段和段寄存器的关系,这由ASSUME语句来指定。如 ASSUME CS:code, DS:data, ES:data 语句中的code和data为段名。 这个语句说明: 1. CS将指向名字为code的代码段 2. DS和ES将指向名字为data的数据段 但要注意,ASSUME伪指令只是告知汇编程序有关段寄存器与段的关系,并没有给段寄存器赋予实际的初值。故下面的语句 MOV AX,DATA MOV DS,AX MOV ES,AX 将段基址装入段寄存器。如果程序中用到堆栈段,则SS也需装入实际的初值。 代码段基地址不需要程序员装入CS寄存器,而由OS负责装入。 3) 类别 用单引号括起来的字符串。所有同类别的段被安排在连续的存储区域中。 如:在模块1中有段定义: seg1 SE
文档评论(0)