ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:19.29KB ,
资源ID:25857841      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25857841.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第4章汇编语言程序设计汇总.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第4章汇编语言程序设计汇总.docx

1、第4章 汇编语言程序设计汇总 第4章汇编语言程序设计主要内容 汇编语言源程序的结构 汇编语言语句格式 伪指令 功能调用 汇编语言程序设计 4.1 汇编语言源程序 了解: 汇编语言源程序的结构 汇编语言语句类型及格式一、汇编语言源程序结构1. 汇编语言源程序与汇编程序 汇编语言源程序 用助记符编写 汇编程序 源程序的编译程序 汇编语言源程序 汇编程序 机器语言目标程序2. 汇编语言程序设计与执行过程 输入汇编语言源程序(EDIT) 源文件 . ASM 汇编(MASM) 目标文件 .OBJ 链接(LINK) 可执行文件.EXE 调试(TD) 最终程序二、汇编语言语句类型及格式1. 汇编语言语句类型

2、指令性语句 CPU执行的语句,能够生成目标代码指示性语句 CPU不执行,而由汇编程序执行的语句,不生成目标代码2. 汇编语言语句格式 指令性语句: 标号: 前缀 助记符操作数, 操作数 ;注释指令的符号地址 标号后要有冒号 操作码 注释前加分号指示性语句格式 名字 伪指令助记符 操作数 ,操作数, ;注释 变量的符号地址 指示性语句中至 其后不加冒号 有一个操作数3. 标号、名字 标号后有冒号,在指令性语句前;名字后不加冒号,在指示性语句前。 英文字母、数字及专用字符组成,最大长度不能超过31个,且不能由数字打头,不能用 保留字(如寄存器名,指令助记符,伪指令)。4. 操作数 寄存器 存储器单

3、元 常量 变量或标号 表达式常 量 数字常量 字符串常量 用单引号引起的字符或字符串 例:A MOV AL,A 例:ABCD 汇编时被译成对应的ASCII 码41H,42H,43H,44H用单引号引起的字符或字符串变 量 代表内存中的数据区,程序中视为存储器操作数 变量的属性: 段 值 变量所在段的段地址 偏移量 变量单元地址与段首地址之 间的位移量。 类 型 字节型、字型和双字型表达式 算术运算 逻辑运算 *关系运算 取值运算和属性运算 其它运算算术运算和逻辑运算符 算术运算符 +,-,*,/,MOD 逻辑运算符 AND,OR,NOT,XOR 例: MOV AL,8 AND 4 MOV AL

4、,8+4-1取值运算符 用于分析存储器操作数的属性 获取变量的属性值 OFFSET 取得其后变量或标号的偏移地址 SEG 取得其后变量或标号的段地址 TYPE 取变量的类型 LENGTH 取所定义存储区的长度 SIZE 取所定义存储区的字节数取值运算符例 MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET DATA LEA BX,DATA取值运算符例 若BUFFER存储区用如下伪指令定义: BUFFER DW 200 DUP(0) 则: TYPE BUFFER 等于2 LENGTH BUFFER 等于200 SIZE BUFFER 等于400属性运算符 用于指定其后

5、存储器操作数的类型 运算符:PTR 例: MOV BYTR PTRBX,12H其它运算符方括号: 方括号中内容为操作数的偏移地址段重设符 段寄存器名: 用于修改默认的段基地址 4.2 伪指令 掌握: 伪指令的格式及实现的操作 伪指令的应用伪指令 由汇编程序执行的“指令系统” 作用: 定义变量; 分配存储区 定义逻辑段; 指示程序开始和结束; 定义过程等。常用伪指令 数据定义伪指令 符号定义伪指令 段定义伪指令 结束伪指令 过程定义伪指令 宏命令伪指令一、数据定义伪指令 用于定义数据区中变量的类型及大小 格式: 变量名 伪指令助记符 操作数, ;注释 符号地址 定义变量类型 定义变量值及区域大小

6、1. 数据定义伪指令助记符 DB 定义的变量为字节型 DW 定义的变量为字类型(双字节) DD 定义的变量为双字型(4字节) DQ 定义的变量为4字型(8字节) DT 定义的变量为10字节型数据定义伪指令例 DATA1 DB 11H,22H,33H,44H DATA2 DW 11H,22H,3344H DATA3 DD 11H*2,22H,33445566H数据定义伪指令例_变量在内存中的分布DATA1 11 DATA3 22 22 0 33 0 44 0DATA2 11 22 00 0 22 0 00 0 44 XX 33 66 55 44 33数据定义伪指令的几点说明 伪指令的性质决定所定

7、义变量的类型; 定义字符串必须用DB伪指令 例: DATA1 DB ABCD,66H 41H A 42H B 43H C 44H D 66H2. 重复操作符 作用: 为一个数据区的各单元设置相同的初值 目的: 常用于声明一个数据区 格式: 变量名 伪指令助记符 n DUP(初值,) 例: BW 20 DUP(0) M1 DB 10 DUP(0)3. “?”的作用 表示随机值,用于预留存储空间 MEM1 DB 34H,A,? 随机数 占1个字节单元 DW 20 DUP(?) 预留40个字节单元,每单元为随机值数据定义伪指令例 M1 DB How are you? M2 DW 3 DUP(11H)

8、,3344H DB 4 DUP(?) M3 DB 3 DUP(22H,11H,?) 变量在内存中的分区数据定义伪指令例M1 M2 11H M3 22H 00H 11H 11H XX 00H 22H 11H 11H 00H XX 44H 22H 33H 11H XX XX XX XX XX二、符号定义伪指令 格式: 符号名 EQU 表达式 操作: 用符号名取代后边的表达式,不可重新定义 例: CONSTANT EQU 100 VAR EQU 30H+99H EQU说明的表达式不占用内存空间三、段定义伪指令 说明逻辑段的起始和结束; 说明不同程序模块中同类逻辑段之间的联系形 态段定义伪指令格式 段

9、名 SEGMENT 定位类型 组合类型 类别 段名 ENDS 说明逻辑段的起点 说明不同模块中同名 段的组和连接方式定位类型 PARA: 段的起点从节边界开始 (16个字节为1节) BYTE: 段的起点从存储器任何地址开始 WORD:段的起点从偶地址开始 PAGE: 段的起点从页边界开始 组合类型 与其它模块中的同名段在满足定位类型的前提 下具有的组合方式: NONE: 不组合 PUBLIC: 依次连接(顺序由LINK程序确定) COMMON: 覆盖连接 STACK: 堆栈段的依次连接 AT 表达式: 段定义在表达式值为段基的节边界 MEMORY: 相应段在同名段的最高地址处。类别 不同模块连

10、接时将相同类别的段放在连续的内存区域中段定义伪指令例 DATA SEGMENT 变量在逻辑段中的位置 MEM1 DB 11H,22H 就代表了它的偏移地址 MEM2 DB Hello! MEM3 DW 2 DUP(?) DATA ENDS表示变量所在逻辑段的段地址 表示变量的类型四、设定段寄存器伪指令 说明所定义逻辑段的性质 格式: ASSUME 段寄存器名:段名,段寄存器名:段名,五、结束伪指令 表示源程序结束 格式: END 标号汇编语言源程序结构数据段名 SEGMENT 堆栈段名 SEGMENT 数据段名 ENDS 堆栈段名 ENDS附加段名 SEGMENT 代码段名 SEGMENT 附

11、加段名 ENDS 代码段名 ENDS END一个完整源程序结构例 DSEG SEGMENT DATA1 DB 1,2, 3 DUP(?) DATA2 DW 1234H DSEG ENDS ESEG SEGMENT DB 20 DUP(?) ESEG ENDS SSEG SEGMENT STACK STACK DB 200 DUP(?) SSEG ENDS一个完整源程序结构例 CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG, ES:ESEG,SS:SSEG START:MOV AX,DSEG MOV DS,AX 段寄存器初始化 MOV AX,ESEG 将段地址送 MOV

12、ES,AX 相应的段寄存 MOV AX,SSEG MOV SS,AX 源程序代码 CSEG ENDS END START六、过程定义伪指令 用于定义一个过程体 格式: 过程入口的符号地址 过程名 PROC NEAR / FAR RET 过程名 ENDP过程定义及调用例 定义延时子程序 调用延时子程序: DELAY PROC CALL DELAY PUSH BX PUSH CX MOV BL,2 NEXT: MOV CX,4167 W10M: LOOP W10M DEC BL JNZ NEXT POP CX POP BX RET DELAY ENDP 七、宏命令伪指令 宏 源程序中由汇编程序识别

13、的具有独 立功能的一段程序代码格式: 宏命令名 MACRO ENDM八、其它伪指令 ORG 段内程序代码或变量的起始偏移地址 格式: ORG 表达式 例: 计算值为非负常数 ORG 2000H其它伪指令 NAME-为目标程序设定一个名字 格式: NAME 模块名 TITLE-为程序清单指定打印标题 格式: TITLE 标题名 4.3 功能调用 DOS 功能调用 BIOS功能调用DOS 功能调用 包含多个子功能的功能包; 用软中断指令调用,中断类型码固定为21H; 各子功能采用功能号来区分。DOS 功能调用 设备管理 目录管理 文件管理 其它DOS 功能调用 调用格式: MOV AH,功能号 I

14、NT 21H一、单字符输入 调用方法: MOV AH,01 INT 21H 输入的字符在AL中 单字符输入例 GET_KEY: MOV AH,1 INT 21H CMP AL,Y JZ YES CMP AL,N JZ NO JMP GET_KEY YES: NO: 交互式应 答程序 注意问题: 调用格式 字符输入缓冲区的定义1. 调用格式 AH 功能号OAH DS:DX 字符串在内存中的存放地址 INT 21H 2. 定义字符缓冲区 用户自定义缓冲区格式: 存放字符个数:255 N1N2 0DH 存放键入的字符 整个缓冲区 实际键入字符数最大可键入字符数输入字符串程序段 DAT1 DB 20,

15、?,20 DUP(?) 在数据段中定义 LEA DX,DAT1 MOV AH,0AH INT 21H输入缓冲区 定义后的输入缓冲区初始状态: 14H ? 20个字节三、单字符显示输出 AH 功能号O2HDL 待输出字符INT 21H 单字符显示输出例MOV AH,02MOV DL,41HINT 21H 执行结果: 屏幕显示A四、字符串输出显示AH 功能号O9HDS:DX 待输出字符串的偏移地址INT 21H 字符串输出显示 被显示的字符串必须以$结束,且所显示的 内容不应出现非可见的ASCII码字符串输出显示例DATA SEGMENTMESS1 DB Input String:, 0DH,0AH,$DATA ENDSCODE SEGMENT MOV AH,09MOV DX,OFFSET MESS1INT 21H 4.4 汇编语言程序设计 设计步骤: 根据实际问题抽象出数学模型 确定算法 画程序流程图 分配内存工作单元和寄存器 程序编码 调试程序流程图符号起始: 功能:判断: 子过程:汇编语言程序结构 顺序结构 循环结构 先判定型 后判定型 分枝结构 单分枝 多分枝 子程序结构

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1