UltraDebug

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: A C D R G Y M Z X S P
公益项目,接受捐赠
查看: 1475|回复: 0
收起左侧

[原创] PC汇编语言学习笔记

[复制链接]
qingjue

主题

0

回帖

UD

版主

UID
5
积分
70
注册时间
2021-12-21
最后登录
1970-1-1
2022-5-25 21:57:40 | 显示全部楼层 |阅读模式

机器语言

每种 CPU 仅懂得自己的 machine language,而在 machine language 中的指令相当艰涩难懂不容易阅读,每个指令都有属于自己的唯一识别码,称为 operation code(或是 opcode),通常位于指令的开头。

而要让 CPU 执行工作,必须给他 machine language 才可;然而,直接撰写 machine code 几乎是不可能的事情,因此,我们需要可以将 assembly 转为 machine code 的工具 - assembler

汇编语言

assembly 程式是以纯文字的方式进行储存的,其中类似的语法如下:

  • add eax, ebx

由程式中可以看得出来该行指令所要进行的动作,而将其转译成 machine code 的工作,则交给 assembler 来做即可。

而在其他的程式语言中,扮演此种角色(将程式转为 machine code)的,称为 compiler,然而 compiler 的复杂度远远高过 assembler,原因是因为 assembly code 与 machine code 的关系是一行对一行的,而一般程式语言中的一行就常常产生多行相对应的 machine code。

另外与其他程式语言不同的地方是,每种 CPU 不但有自己的 machine language,也有自己的 assembly language,因此若要将 assembly code 进行 porting,难度会比一般的程式语言高上许多。

指令操作数

一般 machine code 的指令中都会包含多个或多种的 operand(运算元),而 operand 大概可以分为以下几类:

  1. register
    指向储存于 CPU register 中的植。

  2. memory
    指向储存于 memory 中的资料,而 memory address 有可能是直接写于指令中,或是由 register 的值所组成。

还有更多的精彩内容,作者设置为付费后可见
UltraDebug免责声明
✅以上内容均来自网友转发或原创,如存在侵权请发送到站方邮件9003554@qq.com处理。
✅The above content is forwarded or original by netizens. If there is infringement, please send the email to the destination 9003554@qq.com handle.
回复 打印

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|站点地图|UltraDebug ( 滇ICP备2022002049号-2 滇公网安备 53032102000034号)

GMT+8, 2025-6-21 00:47 , Processed in 0.031830 second(s), 10 queries , Redis On.

Powered by Discuz X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表