考研408--组成原理--day8--汇编指令&不同语句的机器级表示

(以下内容全部出自上述课程)

目录

  • 高级语言与机器级代码之间的对应
    • [1. X86汇编语言指令基础](#1. X86汇编语言指令基础)
    • [2. X86架构CPU,有哪些寄存器](#2. X86架构CPU,有哪些寄存器)
    • [3. 小结](#3. 小结)
  • 常用的X86汇编指令
    • [1. 算术运算指令](#1. 算术运算指令)
    • [2. 逻辑运算指令](#2. 逻辑运算指令)
    • [3. 其他指令](#3. 其他指令)
  • AT&T格式和Intel格式
  • 选择语句的机器级表示
    • [1. 分支结构](#1. 分支结构)
    • [2. 无条件转移指令](#2. 无条件转移指令)
    • [3. 条件转移指令](#3. 条件转移指令)
    • [4. 扩展-cmp指令的底层原理](#4. 扩展-cmp指令的底层原理)
  • 循环语句的机器级表示
    • [1. 条件转移指令](#1. 条件转移指令)
    • [2. loop指令](#2. loop指令)
  • Call和ret指令
    • [1. 高级语言的函数调用](#1. 高级语言的函数调用)
    • [2. x86汇编语言的函数调用](#2. x86汇编语言的函数调用)
    • [3. call、ret指令](#3. call、ret指令)
    • [4. 小结](#4. 小结)

高级语言与机器级代码之间的对应



1. X86汇编语言指令基础

  • 数据在寄存器中:寄存器寻址
  • 数据在主存中:很多种寻址方式
  • 数据在指令中:立即寻址

寻址可见:寻址

见到什么代表什么:

  • A,B --> 目的操作数,源操作数
  • \] --\> 这是个地址

  • word ptr --> 单字
  • byte ptr --> 字节

2. X86架构CPU,有哪些寄存器

  • 出现字母E-->就表示这是一个寄存器

    通用寄存器虽然是32bit,但是可以分开,比如单独使用低16bit,或者单独使用8bit;
    但是下面的几个寄存器不可以这么使用,必须全部32bit都使用。


3. 小结

常用的X86汇编指令

1. 算术运算指令

汇编指令都是直接取用对应英文的前几个字,所以记住英文单词有利于我们掌握汇编指令。

2. 逻辑运算指令

3. 其他指令

AT&T格式和Intel格式

AT&T格式和Intel格式的目的操作数和源操作数的位置是完全相反的,做题时一定要看清楚。

基址+变址*比例因子-->找到具体元素

上述+偏移量-->找到元素中的具体变量

选择语句的机器级表示

1. 分支结构

计数器:pc-->ip

2. 无条件转移指令

jmp-->无条件判断,类似于goto,说往哪儿跳就往哪儿跳

3. 条件转移指令

使用时:要么两边的条件相同,汇编语言的if、else语句块逆序。

要么汇编语言的条件相反,两边的if、else语句顺序相同。

(00401035)--> 括号中是对f1+35h的注释,说明跳转到的这个地址位。

4. 扩展-cmp指令的底层原理

循环语句的机器级表示

1. 条件转移指令


2. loop指令

Call和ret指令

1. 高级语言的函数调用


2. x86汇编语言的函数调用

3. call、ret指令

4. 小结


相关推荐
1尢晞16 小时前
Java学习
java·开发语言
毕设源码-赖学姐6 小时前
【开题答辩全过程】以 基于python的电影推荐系统为例,包含答辩的问题和答案
开发语言·python
星辰_mya6 小时前
Elasticsearch线上问题之慢查询
java·开发语言·jvm
前端小菜袅6 小时前
PC端原样显示移动端页面方案
开发语言·前端·javascript·postcss·px-to-viewport·移动端适配pc端
Highcharts.js6 小时前
如何使用Highcharts SVG渲染器?
开发语言·javascript·python·svg·highcharts·渲染器
郝学胜-神的一滴6 小时前
超越Spring的Summer(一): PackageScanner 类实现原理详解
java·服务器·开发语言·后端·spring·软件构建
摇滚侠6 小时前
Java,举例说明,函数式接口,函数式接口实现类,通过匿名内部类实现函数式接口,通过 Lambda 表达式实现函数式接口,演变的过程
java·开发语言·python
阿里嘎多学长7 小时前
2026-02-03 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Tony Bai7 小时前
“Go 2,请不要发生!”:如果 Go 变成了“缝合怪”,你还会爱它吗?
开发语言·后端·golang
打工的小王7 小时前
java并发编程(七)ReentrantReadWriteLock
java·开发语言