




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章汇编语言程序设计 H 4 2伪指令语句 伪指令语句 在汇编期间进行处理 主要完成变量定义 存储器分配 指示程序开始和结束 段定义 段分配等 伪指令没有对应的机器代码 不像指令语句那样由CPU来执行 它是由汇编程序在汇编期间进行处理 伪指令则不产生与之相应的目标代码 H 示例 偏移量机器码程序0000CODESEGMENTASSUMECS CODE00000405PROG S ADDAL 05H000290NOP0003EBFBJMPSHORTPROG S000590NOP0006CODEENDSEND 伪指令语句分类 数据定义语句 如DB DW DD等标号赋值语句 如EQU 等段定义语句 如SEGMENT ENDS段分配语句 如ASSUME过程定义语句 如PROC ENDP程序开始结束语句 如ORG END H 数据定义伪指令 格式1 变量名助记符操作数1 操作数n 注释 格式2 变量名助记符nDUP 操作数1 操作数n 注释功能 将操作数存入变量名指定的存储单元中 或者只分配存储空间不存入数据 变量名 用符号表示 可以省略 后面不跟冒号 汇编时将变量助记符后的第一个字节的偏移地址作为它的符号地址 助记符 所用伪指令助记符主要有DB DW DD DQ DT H 数据定义伪指令 操作数 操作数可以是常数 字符串 变量 标号 表达式等 多个操作数之间必须用逗号分开 格式2中 n必须是正整数 注释 说明伪指令的功能 可以省略 注释前必须带分号 如果注释在一行中注释写不下 换行写时 前面必须加上分号 H H 数据定义伪指令 例 操作数是常数和表达式DA1DB10H 52HDA2DW1122H 34HDA3DD5 20H 0FFEEH汇编后数据在存储器中存放格式如图所示 10 52 22 11 34 00 DA1 DA2 1122H 34H A0 00 00 00 DA3 EE FF 00 00 00A0H 0FFEEH 数据定义伪指令 例 操作数是字符串FIRSTDB HELLO SEDW OK DW在定义字符串时 只能定义两个 若要定义多个字符 只能用DB 汇编后数据在存储器中存放格式如图所示 48 45 4C 4C FIRST HELLO 4B 4F SE KO 4F H DB与DW在存放上的区别 NUM1DB12H 34H NUM2DW1234H CHAR1DB OK CHAR1DW OK 12 34 NUM1 34 12 NUM2 4F 4B CHAR1 O K 4B 4F CHAR2 K O H 数据定义伪指令 例 操作数用DUP定义重复变量 ONEDB5DUP 0 TWODW10DUP THRDB4DUP 1 2DUP 20H 00 ONE TWO 00 01 20 20 THR 01 20 20 5个 20个 4个 H 下列变量各占多少字节 A1DW23H 5876HA2DB3DUP 0AH 0DH A3DD5DUP 1234H 567890H A4DB4DUP 3DUP 1 2 ABC 课堂练习 H A1 2 2 4A2 3 3 6A3 5 4 4 40A4 4 3 5 60 段定义语句 分类名 汇编时 汇编程序连接时将所有分类名相同的逻辑段组成一个段组 常见格式 段名SEGMENT逻辑段内容段名ENDS我们在学习时 可以忽略其它因素 会识别 使用常用格式即可 H 段分配语句 段分配语句 ASSUME 格式 ASSUMECS 段名 DS 段名 SS 段名 ES 段名 段名必须是前面段定义语句SEGMENT ENDS中定义的段名 代码段的定义是必须的 段程序开始时 需要将数据段 除代码段 的段基址装入相应的段寄存器中 数据段段基地址 DS 堆栈段段基地址 SS 扩展段段基地址 ES H H 例 两个16位无符号二进制数相乘 DATASEGMENTD1DW1234HD2DW5678HP1DW P2DW DATAENDSSTACKSEGMENTSTACK STACK STTDB100DUP TOPEQULENGTHSTTSTACKENDSCODESEGMENTASSUMECS CODE DS DATA SS STACKSTART 程序部分CODEENDSENDSTART 数据段 堆栈 代码段 H 程序部分 MOVAX STACK 初始化SS SPMOVSS AXMOVSP TOP 栈顶偏移地址送堆栈指示器SP中 MOVAX DATA 初始化DS 必须先送AX 再转存MOVDS AXL1 MOVAX D1 D1 D2 积的高位在DX 低位在AXMULD2MOVBX OFFSETP1 积送P2和P1指向的存储单元MOV BX AXMOV BX 2 DXMOVAH 4CHINT21H 可以参阅教材P140 返回DOS方式不一样 过程定义语句 过程也称为子过程 可以节省存储空间 模块化设计 格式 过程名PROC属性 过程内容RETN过程名ENDP 功能 定义一个过程 主程序可以用CALL指令调用 过程名 过程的名字 不可缺省 为子程序的入口地址具有三个属性 段属性 偏移地址属性 距离属性 H 过程定义语句 PROC ENDP 过程定义伪指令助记符 成对出现 不可缺省 二者前面有相同的过程名 RETN 过程内部的返回指令 过程内部至少有一条RET指令 可以在过程的任何位置 使过程返回到主程序 过程内部可以有多个RET 表示此过程具有多个返回出口 在不同条件下 从不同出口返回 N为弹出值 N必须为正偶数 可以缺省 过程调用允许嵌套和递归调用 嵌套与递归的深度由堆栈段的容量决定 H H 例 用过程调用的方法 将内存中4个十六进制数进行相加 DATASEGMENTONEDB22H 33H 44H 55HTWODB55H 66H 77H 88HSUMDB20DUP 总和DATAENDSSTACKSEGMENTSTACK STACK STTDB100DUP TOPEQULENGTHSTTSTACKENDSCODESEGMENTASSUMECS CODE DS DATA SS STACKSTART 程序部分CODEENDSENDSTART 数据段 堆栈 代码段 H 主程序部分 MOVAX STACK 初始化SS SPMOVSS AXMOVSP TOP 栈顶偏移地址送堆栈指示器SP中MOVAX DATAMOVDS AX 初始化DS 必须先送AX 再转存MOVSI OFFSETONE ONE偏移地址送SIMOVDI OFFSETTWO TWO偏移地址送DIMOVBX OFFSETSUM 和的偏移地址送BXCLC 清除进位位MOVCX 4L1 CALLABCLOOPL1MOVAH 4CHINT21H ABCPROCMOVAL SI ADCAL DI MOV BX ALINCSIINCDIINCBXRETABCENDP 程序结束语句END 格式 END标号名 功能 标记汇编源程序结束 END 伪指令助记符 不可缺省 放在源程序的最后一行 每个模块只有一个END 汇编程序遇到END语句即停止汇编 标号名 是该程序中第一条可执行语句的编号 可以缺省 若一个程序包含多个模块 END后面带的标号为主程序模块中的标号名称 H 系统功能调用系统功能调用是微机的磁盘操作系统DOS为用户提供的一组例行子程序 因而又称为DOS系统功能调用 这些子程序可分为以下四个主要方面 1 磁盘的读 写及控制管理 2 内存管理 3 基本I O管理 如键盘 打印机 显示器等 4 其他管理 如时间 日期等 常用系统功能调用和BIOS中断调用 H 对于所有的功能调用 使用时一般需要经过以下三个步骤 子程序的入口参数送相应的寄存器 有些子程序调用不需要入口参数 此步可略 子程序编号送AH 发出中断请求 INT21H 系统功能调用指令 DOS调用的步骤 H H 键盘和显示器的DOS调用 调用格式 MOVAH 1INT21H系统执行该功能时将扫描键盘 等待键入 一旦有键按下 就将键值 相应字符的ASCII码值 读入 先检查是否是Ctrl Break 若是 则退出命令执行 否则将键值送入AL寄存器 同时将这个字符显示在屏幕上 1号功能调用 8号调用与其类似 区别在于在显示器上不回显 H 调用格式 MOVDL 待显示字符的ASCII码MOVAH 2INT21H本调用执行后 显示器显示其ASCII码值放入DL中的字符 2号功能调用 5号调用与其类似 打印机打印DL中的字符 H 调用格式 MOVDX 待显示字符串首字符的偏移地址MOVAH 9INT21H本调用执行后 显示器显示待显示的字符串 调用时 要求DS DX必须指向内存中一个以 作为结束标志的字符串 9号功能调用 H 顺序结构 分支结构 循环结构 子程序结构 四种程序结构 H 4 3汇编语言程序设计基础 好程序的标准 模块化设计 易读 易调试 易维护 执行速度快 占用内存空间小 H 顺序结构 特点 顺序执行 程序通常简单 无分支 无循环 无转移 图中无判断框 开始 语句1 语句n 结束 H 例 内存从Table开始存放0 9的平方值 通过人机对话 当给定一个数X 0 9 查表得出X得平方值 放入AL中 分析问题 首先在内存中开辟区域存放Table内容 利用01功能调用从键盘上输入一个数据 利用XLAT查表即可获得数据置入AL即可 流程图 如图所示 开始 提示输入数据 查表结果送AL 结束 接收数据 H Step1 Step2 查表 9号功能调用 提示用户输入数据MOVAH 09HINT21H MOVBX OFFSETTableXLAT 表交换指令 例 内存从Table开始存放0 9的平方值 通过人机对话 当给定一个数X 0 9 查表得出X得平方值 放入AL中 H 1号功能调用 键值存入AL中MOVAH 01HINT21H Step3 查表 H 例 内存从Table开始存放0 9的平方值 通过人机对话 当给定一个数X 0 9 查表得出X得平方值 放入AL中 DATASEGMENTTableDB0 1 4 9 16 25 36 49 64 81BUFDB inputnumber 0DH 0AH DATAENDSCODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AXMOVDX OFFSETBUFMOVAH 09H 0D 0A代表回车换行 9号功能调用INT21HMOVAH 1 1号调用 数据送ALINT21HANDAL 0FH MOVBX OFFSETTABLEXLATCODEENDSENDSTART 分支结构 分支结构 程序根据不同条件选择不同的处理方法 图中可以有一个到多个判断条件 H 例 存储器中有一字符串首地址为BUF 字符串长度小于256 要求分别计算出数字 0 9 字母 A Z 和其它字符的个数 并分别将它们的个数存放到此字符串的下面三个单元中 分析问题 对于BUF中的字符串 取出一个字符 将字符的ASCII码和数字 0 9 30H 39H 及字母 A Z 41H 5AH 进行比较并计数 最后存入内存单元中 流程图 如图所示 开始 取字符数入CX DL DL 1 结束 取字符 CX 0 DH DH 1 N 为数字 0 9 N Y Y 为字母 A Z Y N H H 例 存储器中有一字符串首地址为BUF 字符串长度小于256 要求分别计算出数字 0 9 字母 A Z 和其它字符的个数 并分别将它们的个数存放到此字符串的下面三个单元中 DATASEGMENTBUFDBNDB01H 38H 47H 90H 33H 09H 76HNUMDB3DUP DATAENDSCODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AXLEABX BUFMOVCL BX 取字符数N放入CX中MOVCH 0MOVDX 0 计数DH DL清零INCBX 指向首字符 H 例 存储器中有一字符串首地址为BUF 字符串长度小于256 要求分别计算出数字 0 9 字母 A Z 和其它字符的个数 并分别将它们的个数存放到此字符串的下面三个单元中 LP MOVAL BX CMPAL 0 JLNEXT 指向下一个字符CMPAL 9 JGABC 是否为字符INCDHJMPNEXT ABC CMPAL A JLNEXTCMPAL Z JGNEXTINCDL 判断字符范围 NEXT INCBXLOOPLP CX不为零 循环 LEABX NUMMOV BX DHMOV BX 1 DLMOVAL BUFSUBAL DHSUBAL DLMOV BX 2 ALCODEENDSENDSTART 循环结构 循环结构 程序根据需要重复执行某段语句以完成某特定功能 一般可以分成两种结构形式 先执行 后判断 进入循环后至少要执行一次循环体 再判断循环是否结束 适合于循环次数固定的程序 先判断 后执行 进入循环后 先判断循环结束条件 再决定是否执行循环体 可能循环体一次也不执行 适合于循环次数不固定的程序 H 先执行 后判断 初始化部分 入口 循环体 修改参数 循环控制 出口 初始化部分 入口 循环体 修改参数 循环控制 出口 先判断 后执行 循环结构 H 循环结构 循环结构四
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全体员工安全培训课件
- 入职安全培训课件缺失问题
- 催乳知识培训内容
- 保安培训法律知识课件
- 规范干部使用管理办法
- 企业消防安全培训教材课件
- 检察救助基金管理办法
- 税务稽查发票管理办法
- 校区巡查工作管理办法
- 纪委公车使用管理办法
- 2023-2025年中考语文试题分类汇编:记叙文阅读(辽宁专用)解析版
- 2025年公路检测工程师《水运结构与地基》试题及答案
- 学校食堂从业人员食品安全知识培训考试试题(含答案)
- 电影艺术概述-设计艺术-人文社科-专业资料
- 2025年教科版新教材科学三年级上册全册教案设计(含教学计划)
- 医院药品采购与质量控制规范
- 支部纪检委员课件
- 从+“心”+出发遇见更好的自己-开学第一课暨心理健康教育主题班会-2025-2026学年高中主题班会
- 2025版仓储库房租赁合同范本(含合同生效条件)
- 隔爆水棚替换自动隔爆装置方案及安全技术措施
- 2025年人伤保险理赔试题及答案
评论
0/150
提交评论