文章目录

  • 一、序言
  • 二、汇编语言程序格式和伪指令
    • 2-1 汇编语言程序格式
    • 2-2 伪指令语句
      • 2-2-1 段定义语句
      • 2-2-2 段分配语句
      • 2-2-3 过程定义语句
      • 2-2-4 变量定义语句
      • 2-2-5 程序结束语句
      • 2-2-6 其他伪指令
    • 2-3 完整的汇编语言程序框架
  • 三、汇编语言程序设计方法与实例

一、序言

  • 使用指令的助记符、符号地址和标号等编写的程序设计语言称为汇编语言
  • 用汇编语言编写的程序运行速度快,实时性好,占用内存空间小,能最大限度发挥硬件的作用。
  • 用汇编语言编写程序效率低,程序设计的技巧性强
  • 汇编语言程序汇编处理过程
    ①汇编语言程序经编辑程序EDIT编排后生成汇编语言源程序PROG.ASM
    ​②经汇编语言汇编后生成目标文件PROG.LIST
    ③此时还可以生成一个可选的列表文件PROG.LIST
    ​④目标文件经连接程序LINK连接后生成可执行文件PROG.EXE。

二、汇编语言程序格式和伪指令

2-1 汇编语言程序格式

指令语句:标号: 指令助记符 操作数 ;注释

  • 标号
    ①标号后面必须加冒号:
    ②如果没有别的转移指令要转移到某条指令,则该条指令前面就无须加标号
    ③可以用作标号的字符,包括英文字母、数字或某些特殊字符,但第一个字符必须为英文字母或某些特殊字符,圆点只能用作第一个字符。
    ④特殊字符不能单独用作标号系统中已定义的保留字,如指令,操作符为指令,指示符,寄存器名和运算符等都不能作标号。
    ⑤标号具有段基址,偏移量及类型等三种属性。
    ⑥有JMP语句必须有标号
  • 指令助记符
    是指令语句中唯一不可缺少的部分,表示指令系统中指令的操作码。
  • 操作数
    ①一条指令可以有一个操作数或两个操作数,也可以没有。
    ②操作数可以由常数字符或字符串变量标号,寄存器,存储器和表达式等组成。
    ③常数可以由二进制,十进制,16进制及2-10进制的BCD数组成,其中二进制,16进制及BCD数后面必须加B,H和H作为后缀。使用BCD码做操作数的指令,其后面一定要紧跟一条调整指令,以便将运算结果调整为BCD数。
    ④字符和字符串要用单引号括起来。
    ⑤变量通常指用符号表示的存放在存储单元中的可变数值。程序在运行期间可以对它进行修改,其数值可以由为指令DB,DW,DD等来定义,所谓定义就是为变量分配存储单元,也可以为这个存储单元起个名字或设定初值。
  • 注释
    ①注释用来说明一条指令或一段程序的功能,加了注释之后,增强了程序的可读性
    ②可以省略
    ③注释前必须加分号;

伪指令语句:名字 伪指令指示符 操作数 ;注释

  • 名字
    ①名字后面不能跟冒号:
    ②可以省略,但有些语句不能省略
  • 伪指令指示符
    常用:
    ①段定义语句 SEGMENT和ENDS
    ②段分配语句 ASSUME
    ③过程定义语句 PROC和ENDP
    ④变量定义语句 DB、DW、DD、DQ、DT
    ⑤程序结束语句 END
  • 操作数:有的伪指令不允许带操作数,有的伪指令可以带一个或多个操作数。
  • 注释:注释部分与指令语句要求类似。

表达式和运算符

将常数、符号、寄存器等通过运算符连接起来的式子叫做表达式。

2-2 伪指令语句

2-2-1 段定义语句

段定义语句用来定义一个逻辑段,每个段以SEGMENT开始,以ENDS结束,整个段的内容都在这两条伪指令之间。每个段都有一个段名,段名由用户指定,位于SEGMENT和ENDS前面,不可省略,它确定了该逻辑段在存储器中的段基地址,即高16位物理地址。

(1)定位类型

  • 一个汇编语言程序可以包括多个段,必须用LINK程序将各个段相互衔接起来,两段之间如何连接由定位类型来规定,它确定该段存储器的起始边界要求。
  • 定位类型为PAGE、PARA和WORD时,分别表示该段起始地址能被256(页)、16(节)和2(字)整除。
  • 定位类型为BYTE(字节)时,起始地址可以从任何地方开始。
  • 默认值PARA(节)表示能被16整除的地方分段。
  • 在计算机中,16个字节单元称为1节,256个字节为1页。

(2)组合类型

组合类型用来告诉LINK程序本段与其他段的关系。

  • NONE
    表示本段与其他段不进行连接,各段有独自的段基地址和偏移量,这是默认值的组合类型
  • PUBLIC
    两个或几个同名同类别的模块段连接成一个段,段基地址相同,但偏移量不同
  • COMMON
    本段与其他段覆盖,偏移地址名称不同
  • STACK
    表示是堆栈段,不可忽略
  • MEMORY
    该段在连接时被放在所有段的最后(最高地址)
  • AT
    告诉连接程序将本段装在表达式所指定的段基地址处

(3)分类名

  • 必须用单引号括起来
  • 使LINK程序所有分类名相同的逻辑段组成一个段组,典型的分类有‘STACK’,‘CODE’和‘DATA’等。

2-2-2 段分配语句

  • ASSUME可以根据各个逻辑段的段名,将它们分别定义成代码段(CS)、数据段(DS)、堆栈段(SS)和附加数据段(ES)。
  • 格式:ASSUME CS:代码段名,DS:数据段名,SS:堆栈段名,ES:附加段名

2-2-3 过程定义语句

用过程定义伪指令PROC和ENDP进行定义,并把这些程序称为过程或子程序,有主程序中的CALL语句来调用它们。

2-2-4 变量定义语句

  • 变量定义语句也称为数据定义语句,它为一个数据项分配存储单元,用-个符号即变量名与该存储单元相联系,并可为该数据项提供一个任选的初始值,也可以没有初始值。
  • 变量定义语句的一般形式为:变量名伪指令指示符 操作数 ;注释
  • DB→字节
    DW→字
    DD→双字
    DQ→4字
    DT→10字节
    DUP(复制操作符)→定义重复变量
  • 变量名用符号表示,也可以省略,其作用与指令语句中的标号类似。

2-2-5 程序结束语句

程序结束语句的格式为:END [标号名或名字]

  • 个模块只能有一条也必须有一条END语句。
  • 标号名或名字也可以省略不写。

2-2-6 其他伪指令

(1)等值伪指令EQU
等值伪指令语句的格式为:符号名 EQU 变量、标号、常数等。
我jio得跟C语言中的符号变量有点像

微机原理-汇编语言设计相关推荐

  1. 西安电子科技大学计算机微原课设,西安电子科技大学我机电院微机原理课程设计.doc...

    西安电子科技大学我机电院微机原理课程设计 微机原理课程设计 学 院 机电工程学院 专 业 自动化 姓 名 ******* 学 号 ******** 指导教师 千博 董瑞军 一.微元课程设计 课程设计的 ...

  2. 课程设计用计算机演奏音乐,微机原理课程设计--音乐演奏.doc

    微机原理课程设计--音乐演奏 学 院: 计算机科学技术 专 业: 计算机科学与技术(工) 班 级: 计10-1班 姓 名: 学 号: 指导教师: 2013年3月10日 微机原理与汇编语言课程设计任务书 ...

  3. 8255交通灯实验的微型计算机,微机原理课程设计——8255,8253交通灯模拟实验.doc...

    文档介绍: 微机原理课程设计 设计任务及要求: 交通信号灯的控制: 通过8255A并口来控制LED发光二极管的亮灭. A口控制红灯,B口控制黄灯,C口控制绿灯. 输出为0则亮,输出为1则灭. 用825 ...

  4. 微型计算机测控系统课程设计报告,微机原理课程设计实验报告--步进电机控制.docx...

    文档介绍: 2010-2011学年第一学期 微机原理课程设计实验报告 课题名:步进电机控制 一.课题内容和提示: 编程提示: (1)步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机做步进式旋 ...

  5. 微型计算机原理小闹钟8253,微机原理课程设计-电子钟设计.doc

    微机原理课程设计-电子钟设计 摘要 数字闹钟 1.通过8253定时器产生秒脉冲定时中断.在中断服务程序中实现秒.分.小时的进位(24小时制). 2.将当前时分秒在七段LED显示器上显示(如:09113 ...

  6. 微型计算机原理小闹钟8253,微机原理课程设计-电子钟的设计.doc

    微机原理课程设计-电子钟的设计 摘要 数字闹钟 1.通过8253定时器产生秒脉冲定时中断.在中断服务程序中实现秒.分.小时的进位(24小时制). 2.将当前时分秒在七段LED显示器上显示(如:0911 ...

  7. java音乐播放器文库_微机原理课程设计报告——音乐播放器.doc

    微机原理课程设计报告--音乐播放器.doc 微机 应用系统 课程设计报告 题 目 电子音乐播放器 专业班级 电子信息科学与技术 1001 班 设计学生 完成时间 2012 年 6 月 27 日 湖南文 ...

  8. 微型计算机原理课设抢答器,微机原理课程设计抢答器.doc

    西安郵電大学 硬件课程设计报告 题 目: 抢 答 器 院系名称:计算机学院 专业名称:班 级: 学生姓名:学号(8位):指导教师:设计起止时间 设计目的 用逻辑开关模拟竞赛抢答器按钮(共8个开关:K0 ...

  9. 微机原理课程设计——步进电机工作原理模拟程序设计

    步进电机工作原理模拟程序设计 摘  要 本次设计通过汇编程序,模拟混合两相步进电机工作原理.通过按键控制步进电机的启动.停止与电机工作方式的选择,并且在PC显示器上模拟显示电机按指定转速周而复始的转动 ...

最新文章

  1. tensorflow 回归的例子,包括保存模型和重新预测
  2. shell错误 sed: can't read : No such file or directory
  3. 使用Sencha Designer来快速开发web用户界面 -- 初识Designer
  4. 鸿蒙发布官网,鸿蒙发布在即,高情商似乎也非常重要
  5. 第一章 PX4程序编译过程解析
  6. phpfind mysql怎么用_MySQL 的 find_in_set 函数使用方法
  7. 创业成功需早起?看看IT大佬们的作息时间
  8. 350个特性看透ES6
  9. oracle11g重建undo,Oracle11gORA-03113故障,重建控制文件
  10. 微信公众号根据URL取文章详情 API 返回值说明
  11. 计算机打印病历格式要求,计算机打印病历书写要求
  12. 【面试分享】奇安信渗透测试工程师,通过!
  13. docker加了--insecure-registry后docker启动报错Failed to start Docker Application Container Engine.
  14. 自定义 QGraphicsItem
  15. 微信小程序:注册微信小程序
  16. WIFI芯片调试APP Wif网络精灵
  17. 外星人大战---------------游戏开发(二)
  18. 黄褐斑激光-百花净斑方
  19. PhalAPI学习笔记 ——— 第二章接口服务请求
  20. hg8010h的调试。

热门文章

  1. 文本分析 | 年报转换TXT关键词频统计
  2. 2019年淘宝运营里中小卖家需要掌握的技能!
  3. 湿地营救机器人_“湿地卫士”创意机器人,真棒!
  4. 多智能体强化学习思路整理
  5. easyuefi只能在基于uefi启动的_只需2个命令,就能将win10 BIOS启动方式转换为UEFI,你见过吗!...
  6. 分享一些提高逻辑能力的心得
  7. 搜狗输入法截屏不能用了
  8. 二维卷积网络函数con2d
  9. HGAME2022 Web WP
  10. 数据结构自学笔记二、栈