前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【汇编语言】寄存器(CPU工作原理)(二)—— 汇编指令的基础操作

【汇编语言】寄存器(CPU工作原理)(二)—— 汇编指令的基础操作

作者头像
Crossoads
发布2024-10-22 08:56:30
950
发布2024-10-22 08:56:30
举报
文章被收录于专栏:汇编语言

前言

📌 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。但仅仅从课程的角度出发就太片面了,其实学习汇编语言可以深入理解计算机底层工作原理,提升代码效率,尤其在嵌入式系统和性能优化方面有重要作用。此外,它在逆向工程和安全领域不可或缺,帮助分析软件运行机制并增强漏洞修复能力。 本专栏的汇编语言学习章节主要是依据王爽老师的《汇编语言》来写的,和书中一样为了使学习的过程容易展开,我们采用以8086CPU为中央处理器的PC机来进行学习。

文章主要内容:几条基础的汇编指令的讲解,例如 MOVADD 等常用指令。

正文——(一气呵成解决本文内容)

通过汇编指令控制 CPU 进行工作,看一下下表中的几条指令。

注意:

如:mov ax,18和MOV AX,18的含义相同;bx和BX的含义相同:

接下来看一下CPU执行下表中的程序段的每条指令后,对寄存器中的数据进行的改变。

示例1

指令执行后 AX 中的数据为多少?思考后看下列分析。

分析: 程序段中的最后一条指令 add ax,bx,在执行前 ax和bx中的数据都为8226H,相加后所得的值为:1044CH,但是ax为16位寄存器,只能存放4位十六进制的数据,所以最高位的1不能在ax中保存,ax中的数据为:044CH。

示例2

指令执行后 AX中的数据为多少?思考后看下列分析。

分析: 程序段中的最后一条指令 add al,93H,在执行前,al中的数据为C5H,相加后所得的值为:158H,但是al为8位寄存器,只能存放两位十六进制的数据,所以最高位的1丢失,ax中的数据为:0058H。(这里的丢失,指的是进位值不能在8位寄存器中保存,但是CPU并不真的丢弃这个进位值,关于这个问题,我们将在之后的内容中讨论。)

📌注意: 此时al是作为一个独立的8位寄存器来使用的,和ah没有关系,CPU在执行这条指令时认为 ah 和a是两个不相关的寄存器。不要错误地认为,诸如 add al,93H 的指令产生的进位会存储在 ah中,add al,93H进行的是8位运算。 如果执行 add ax,93H,低8位的进位会存储在ah中,CPU 在执行这条指令时认为只有一个16位寄存器ax,进行的是16位运算。指令 add ax,93H执行后,ax 中的值为:0158H。此时,使用的寄存器是16位寄存器ax,add ax,93H相当于将ax中的16位数据00c5H和另一个16位数据0093H相加,结果是16位的0158H。

在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的,例如:

等都是正确的指令,而:

等都是错误的指令,错误的原因都是指令的两个操作对象的位数不一致。

结语

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下。

也可以点点关注,避免以后找不到我哦!

Crossoads主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的动力!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文——(一气呵成解决本文内容)
  • 结语
相关产品与服务
脆弱性检测服务
脆弱性检测服务(Vulnerability detection Service,VDS)在理解客户实际需求的情况下,制定符合企业规模的漏洞扫描方案。通过漏洞扫描器对客户指定的计算机系统、网络组件、应用程序进行全面的漏洞检测服务,由腾讯云安全专家对扫描结果进行解读,为您提供专业的漏洞修复建议和指导服务,有效地降低企业资产安全风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档