DJ13-1 汇编语言程序设计-1

news2024/11/14 1:31:52

目录

一、基本概念

1. 机器语言(machine language)

2. 汇编语言(assembly language)

3. 汇编语言源程序

4. 汇编(assemble)

5. 汇编程序(assembler)

6. 宏汇编程序(MASM)

7. 高级语言(high level language)

8. 编译程序和解释程序

二、汇编语言源程序的结构

三、汇编语言语句类型及格式

1. 指令性语句格式

2. 指示性语句格式

四、数据项及表达式

1. 常量

2. 标号

3. 变量

4. 表达式


一、基本概念

1. 机器语言(machine language)

是用二进制码来表示指令和数据的语言,是计算机硬件系统唯一能够直接理解和执行的语言,具有执行速度快、占用内存少等优点。但是其不直观、不易理解和记忆,因此编写、阅读和修改程序都比较麻烦。

2. 汇编语言(assembly language)

弥补了机器语言的不足,它用指令助记符、符号地址、标号和伪指令等来书写程序。由于助记符接近于自然语言,因此与机器语言相比,它在程序的编写、阅读和修改方面都比较方便、不易出错,且执行速度和机器语言程序相同。

3. 汇编语言源程序

用汇编语言编写的程序称为汇编语言源程序。

4. 汇编(assemble)

由于计算机只能辨认和执行机器语言,因此必须将汇编语言源程序翻译成能够在计算机上执行的机器语言(称为目标代码),这个翻译的过程称为汇编。

5. 汇编程序(assembler)

完成汇编过程的系统程序叫作汇编程序。

6. 宏汇编程序(MASM)

是目前使用较多的汇编程序。

汇编语言和机器语言一样,都是面向具体机器的语言。也就是说,不同种类的 CPU 具有不同的汇编语言,互相之间不能通用。(由于不同种类的 CPU 的指令系统不同

7. 高级语言(high level language)

与上述两种语言相比,高级语言的语句更接近人类语言,所以用高级语言编写的程序易读、易编。相对比较简短。它与具体的计算机无关,不受 CPU 类型的限制,通用性很强。

8. 编译程序和解释程序

用高级语言编写的源程序同样必须翻译成为机器代码计算机才能执行,完成这个翻译过程的系统软件称为编译程序或解释程序。

“汇编是从汇编语言到机器码的过程,编译是源代码 → 词法分析 → 语法分析 → 中间代码生成和优化 → 汇编代码 → 机器码的过程。有一些语言是解释执行,就转为对应虚拟机的字节码。”

汇编和编译具体指什么?有什么区别?icon-default.png?t=M85Bhttps://www.zhihu.com/question/388069555

二、汇编语言源程序的结构

例题

将数据段中两个字单元数据相加,结果存入附加段字单元中。

 

三、汇编语言语句类型及格式

汇编语言源程序语句:指令性语句、指示性语句。

① 指令性语句

是由指令系统中的指令助记符组成的语句,汇编后生成可被 CPU 执行的目标代码。

指示性语句

用于告诉汇编程序如何对源程序进行汇编,不生成可执行的目标代码,又称伪操作语句或伪指令。

 

加花括号的是可选项,可以有,也可以没有。

1. 指令性语句格式

{标号:}  {前缀}  操作码  {操作数,操作数}  {;注释}

对于标号,例如 L1:MOV ... ,L1 就是一个标号;

对于前缀,例如 REP、REPZ、REPNZ;

对于操作数,最多为双操作数,也可以没有操作数。

2. 指示性语句格式

{名字}  伪指令  操作数{,操作数,... }  {;注释}

对于名字,例如变量名、段名;

对于伪指令,用于告诉编译器如何进行编译;

对于操作数,至少要有一个,并可根据需要有多个。

四、数据项及表达式

各种形式的数据项最终还是会被还原成一个立即数。

1. 常量

(1)数字常量

二进制数:以字母 B 结尾,如 01001001B。

八进制数:以字母 Q 结尾,如 631Q。

十进制数:以字母 D 结尾或不加结尾。

十六进制数:以字母 H 结尾。

对于十六进制数,若以字母 A~F 开头,则在前面加一个数字 0,如 0FEH。

(2)字符串常量

字符串常量:用单引号括起来的一个或多个字符,其值为这些字符的 ASCII 码值。

汇编程序将其中的每一个字符分别翻译成对应的一个字节的 ASCII 码,如 'AB',汇编时将翻译为 41H、42H。

不像 C 或 C++ 那样自动在最后加结束标志。ASCII 是 8 位。

2. 标号

标号放在一条指令的前面,它就是该指令在内存中存放地址的符号表示,即指令地址的别名。

每个标号有三种属性。

(1)段值属性(SEG)

标号所在段的段地址。

(2)偏移量属性(OFFSET)

标号所在段的段首到定义标号的地址之间的字节数,即偏移地址。

(3)类型属性

标号的类型有 NEAR 和 FAR 两种:

  • NEAR 型地址指针为 2 个字节,只能在段内引用;
  • FAR 型地址指针为 4 个字节,可以在其它段被引用。

缺省时默认为 NEAR,如:JMP L1 等价于 JMP NEAR PTR L1 。

获得属性:

MOV BX,OFFSET L1 ;获取 L1 的偏移地址

MOV BX,SEG L1 ;获取 L1 的段地址

其中 OFFSET 和 SEG 是伪指令。

3. 变量

变量是用来表示存放数据的存储单元,程序中以变量名的形式来访问变量,而变量名就是存放某数据块的存储单元的首地址

格式:

说明: 其中表达式1、表达式2是给存储单元赋的初值。

举例:

注意事项:

(1)变量类型与指令的要求必须相符。

DATA2  DB  200H  ;错误。只能赋一个字节。

MOV  BX,DATA2  ;错误。类型不匹配。若强制转换,则 DATA2 内容为 3020H 。

(2)在定义变量时,变量名对应的是数据区的首地址。如果数据区中有多个数据,则在对其它数据操作数时需修改地址。

NUM  DB  11H,22H,33H

...

MOV  BL,NUM  ;将 11H 送入 BL

MOV  AL,NUM + 2  ;将 33H 送入 AL

每个变量有三种属性。

(1)段值属性(SEG)

变量所在段的段地址。

(2)偏移量属性(OFFSET)

变量所在段的段首到变量地址之间的字节数,即偏移地址。

(3)类型属性

  • BYTE(字节)
  • WORD(单字)
  • DWORD(双字)
  • QWORD(四字)

变量类型必须满足指令要求。

4. 表达式

表达式是指令性语句操作数的常见形式,它由常数、变量、标号等通过操作运算符连接而成。

说明:汇编语言语句中的表达式不是指令,本身不能执行。在程序汇编时,汇编程序将表达式进行相应的运算,得出一个确定的值。所以在程序执行时,表达式本身已是一个有确定值的操作数。表达式仅是将求其值的计算任务交给了汇编程序来完成。

举例

MOV  AX,0ADH  AND  0CCH

MOV  BX,OFFSET  DMem1

MOV  BX,0FFFFH  AND AX  ;错误。

编译期 AX 的内容不能确定,要执行之后才能确定。

MOV  BX,0FFFFH  AND [BP]  ;错误。

编译期存储器内容也不能确定,要执行之后才能确定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/57535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]JAVA毕业设计教材管理(系统+LW)

[附源码]JAVA毕业设计教材管理(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&#xf…

利用CMOS数字隔离器提高智能计量解决方案的数据完整性和可靠性

介绍 随着消费者从传统的机电电表升级到联网的智能电表,自动读表(AMR)市场预计在未来几年将以两位数的速度增长。当今先进的智能电表使用最新的集成电路(IC)技术来准确地测量和报告所消耗的耗电量。虽然智能电表比机电…

【pen200-lab】10.11.1.231

pen200-lab 学习笔记 【pen200-lab】10.11.1.231 🔥系列专栏:pen200-lab 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月27日🌴 🍭作…

Metabase学习教程:系统管理-2

数据共享指南 在组织内部或外部,共享数据或分析的选项是什么?何时应该使用一种方法而不是另一种方法? 你有数据,你想(或被要求)分享它。这些数据是一个问题还是一个访问多个数据库完整的问题数据资料室&a…

SpringCloud - Sentinel熔断与限流

文章目录一.Sentinel下载安装运行二.Sentinel初始化监控三.流控规则1. 阈值类型1.1 QPS1.2 线程数2. 流控模式2.1 直接2.2 关联2.3 链路3. 流控效果3.1 快速失败3.2 WarmUp预热3.3 排队等待四.降级规则1. RT2. 异常比例3. 异常数五.Sentinel 热点key1. 基本使用2. 参数例外项六…

Spring Data JPA - Web 支持、排序和分页

在前面的教程中,我们已经看到了如何使用 Spring Data 分页 Web 支持。在本教程中,我们将了解如何使用排序支持。 在基于 Web 的应用程序中应用排序主要有两种方法: 按可分页处理程序参数排序 我们在前面的示例中使用过,但没有任…

【经验】Word 2021|如何在Word里做出和Markdown中一样漂亮的引用样式(结尾附成品)

文章目录写在最前方法以及参数1 打开样式窗口2 设置一些基本操作3 打开格式窗口4 修改样式最后一步!保持间隔成品的介绍(一些自卖自夸)获取链接(不想看做法的话直接下载)写在最前 Word 版本:2021 这个文章是…

[附源码]JAVA毕业设计技术的游戏交易平台(系统+LW)

[附源码]JAVA毕业设计技术的游戏交易平台(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技…

Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测

全文下载链接:http://tecdat.cn/?p20678在本文中,预测股价已经受到了投资者,政府,企业和学者广泛的关注。然而,数据的非线性和非平稳性使得开发预测模型成为一项复杂而具有挑战性的任务(点击文末“阅读原文…

HTML+CSS个人电影网页设计——电影从你的全世界路过(4页)带音乐特效

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

期末测试——H5方式练习题

期末考试——H5完成方式——练习题 前言 本练习训练了孩子们的栅格化布局,H5标签,CSS样式,并对列表与菜单进行了强化训练。使孩子们更好的掌握H5布局,为后面的框架教学打好基础。 素材下载地址: 链接:htt…

【学习记录】Dynaslam源代码魔改-替换MaskRCNN为YoloV5

这两天接了个小任务,需求是替换Dynaslam里面的动态物体识别模块,将MaskRCNN换为YoloV5,这里记录一下过程中遇见的问题。 一、运行Dynaslam Dynaslam本身是一个基于ORBSLAM2的视觉SLAM框架,论文并没有仔细看过,简单来…

HTML5期末大作业:基于html+css+javascript+jquery实现藏族文化15页【学生网页设计作业源码】

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

免费搜索vs付费搜索:百度谷歌的有力竞争者刚刚出现!

北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理 人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典 搜索引擎的游戏刚刚被改变! 人们对昨天(12月1号)OpenAI 发布…

UltraISO 制作U盘启动盘

1、 从Ubuntu官网http://cn.ubuntu.com/download/下载系统的iso文件 用来制作的U盘需要是FAT32格式的,可以通过格式化U盘更改(注意,如果U盘已经写入过隐藏分区了,需要在磁盘管理里面删除相关隐藏分区然后合并为一个大分区后…

[附源码]Python计算机毕业设计Django基于协同过滤的资讯推送平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

MyBatis动态SQL多表操作

动态SQL if-where标签 <select id"selByCondition" resultMap"rm">select *from mybatis<where><if test"status !null">and STATUS#{STATUS}</if><if test"companyName !null and companyName !">an…

idea10个常用的Debug技巧

文章目录一 回到上一步二 字段断点三 Stream调试四 表达式结果查看五 debug筛选条件六 异常断点七 远程调试八 强制返回九 运行时修改变量十 多线程调试重用快捷键一 回到上一步 进行代码调试的过程中&#xff0c;有的时候由于自己点击下一步的速度比较快&#xff0c;可能之前…

世界连续动作预测模型-方向模型

🍿*★,*:.☆欢迎您/$:*.★* 🍿 正文 <

[附源码]Python计算机毕业设计Django基于java的社区管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…