首页 > 编程语言 >王道408计组汇编语言部分学习总结

王道408计组汇编语言部分学习总结

时间:2023-09-25 19:32:55浏览次数:45  
标签:计组 汇编语言 主存 mov eax 指令 寄存器 ebx 408


x86汇编语言指令基础

x86处理器中程序计数器PC 通常被称为IP 

高级语言—>汇编语言—>机器语言

王道408计组汇编语言部分学习总结_出栈

x86架构CPU,有哪些寄存器

EAX

通用寄存器

EBX

ECX

EDX

ESI

变址寄存器

变址寄存器可用于线性表、字符串的处理

EDI

EBP

堆栈基指针

堆栈寄存器用于实现函数调用

 

ESP

堆栈顶指针

mov eax, ebx       
#寄存器—>寄存器

mov eax, dword ptr [af996h]       
#主存→寄存器

mov eax, 5     
#立即数—>寄存器

moveax, dword ptr[ebx]     
#将ebx所指主存地址的32bit复制到eax寄存器中

mov dword ptr [ebx], eax   
#将 eax的内容复制到ebx所指主存地址的32bit

mov eax, byte ptr [ebx]   
#将ebx所指的主存地址的8bit复制到eax

mov eax, [ebx]   
#若未指明主存读写长度,默认32 bit

mov [af996h], eax   
#将eax的内容复制到af996h所指的地址(未指明长度默认32bit)

mov eax, dword ptr [ebx+8] 
#将ebx+8所指主存地址的32bit复制到eax寄存器中

王道408计组汇编语言部分学习总结_学习_02

 常用的x86汇编指令

1. 常见的算数运算指令


add

add d,s

#计算d+s,结果存入d


subtract

sub d,s

#计算d-s,结果存入d


multiply

mul d,s

#无符号数d*s,乘积存入d

imul d,s

#有符号数d*s,乘积存入d


divide

div s

#无符号数除法edx:eax/s,商存入eax,余数存入edx(被除数已经放到edx:eax中)

idiv s

#有符号数除法edx:eax/s,商存入eax,余数存入edx

取负数

negative

neg d

#将d取负数,结果存入d

自增++

increase

inc d

#将d++,结果存入d .

自减--

decrease

dec d

#将d--,结果存入d

d:destination,目的地(如:寄存器或内存)

s:source,来源地(寄存器,主存,常量)

目的操作数d不可以是常量(因为是把s的东西放到d里)

举例:

add <reg>, <reg> / sub Kreg>, <reg>
add <reg>, <mem> / sub <reg>, <mem>
add <mem>, <reg> / sub <mem>, <reg>
add <reg>, <con> / sub <reg>, <con>
add <mem>, <con> / sub <mem>, <con>

<reg> 的意思是:|寄存器|register
<mem> 的意思是:|内存|memory
<con> 的意思是:|常数|constant

sub eax, 10 #eax←eax-10
add byte ptr [var], 10 #10与var值指示的内存地址的一-字节值相加,并将结果
保存在var值指示的内存地址的字节中

2. 常见的逻辑运算指令 


and

and d,s

#将d、s逐位相与,结果放回d


or

or d,s

#将d、s逐位相或,结果放回d


not

not d

#将d逐位取反,结果放回d

异或

exclusive or

xor d,s

#将d、s逐位异或,结果放回d

左移

shift left

shI d,s

#将d逻辑左移s位,结果放回d (通常s是常量)

右移

shift right

shr d,s

#将d逻辑右移s位,结果放回d (通常s是常量)

3. 其他指令

用于实现分支结构、循环结构的指令: cmp、 test、 jmp、 jxxx
用于实现函数调用的指令: push、pop、call、 ret
用于实现数据转移的指令: mov

3.1 无条件转移指令jmp
jmp <地址>
#PC无条件转移至<地址>
jmp 128
#<地址>可以用常数给出
jmp eax
#<地址>可以来自于寄存器
jmp [999]
#<地址>可以来自于主存
jmp NEXT
mov ecx,ebx
NEXT:
mov ecx,eax
#<地址>可以用“标号”锚定
3.2 条件转移指令j***
je <地址>
#jump when equal, 若a==b则跳转
jne <地址>
#jump when not equal, 若a !=b则跳转
jg <地址>
#jump when greater than, 若a>b则跳转
jge <地址>
#jump when greater than or equal to,若a>=b则跳转
jl <地址>
#jump when less than, 若a<b则跳转
jle <地址>
#jump when less than or equal to, 若a<=b则跳转
cmp eax,ebx #比较寄存器eax和ebx里的值
jg NEXT     #若eax > ebx,则跳转到 NEXT:

3.3 函数调用指令

函数调用指令: call<函数名> 
函数返回指令: ret

call指令的作用:
①将IP旧值压栈保存(保存在函数的栈帧顶部)
②设置IP新值,无条件转移至被调用函数的第一条指令
ret指令的作用:
从函数的栈帧项部找到IPI旧值,将其出栈并恢复IP寄存器

 

push eax #将寄存器eax的值压栈
push 985 #将立即数985压栈
push [ebp+8] #将主存地址[ebp+8]里的数据压栈

pop eax #栈项元素出栈,写入寄存器eax
pop [ebp+8] #栈项元素出栈,写入主存地址:[ebp+8]

push. pop指令实现入栈、出栈操作,x86 默认以4字节为单位。指令格式如下:
Push A  //先让esp减4,再将A压入
Pop B  //栈项元素出栈写入B,再让esp加4
注1:A可以是立即数、寄存器、主存地址:
注2:B可以是寄存器、 主存地址
 

标签:计组,汇编语言,主存,mov,eax,指令,寄存器,ebx,408
From: https://blog.51cto.com/hwuu/7598565

相关文章

  • 王道408--CN---传输层
    一、历年选择题考点二、传输层提供的服务传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。传输层的功能---传输层提供应用进程之间的逻辑通信(即端到端的通信)它为运行在不同主机上的进程之间提供了逻辑通信(即端到端的通信),而网络层......
  • 汇编语言学习笔记
    汇编语言主要知识点来自《汇编语言》速成指南(全程敲代码),配套材料:王爽老师的《汇编语言》使用DOSbox模拟运行8086CPU汇编语言如有错误,欢迎指正!1.入门简单引入关于8086CPU的知识。CPU内部主要由运算器、控制器、寄存器三大部分组成[1]。运算器:负责算术运算(+-*/基......
  • 王道408--CN---数据链路层
    一、历年选择题考点二、数据链路层的主要功能数据链路层的最基本的功能是向该层用户提供透明的和可靠的数据传送基本服务。数据链路层是对物理层传输原始比特流的功能的加强,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,使之对网络层表现为一无差错的线路......
  • 计组 第一章
    计算机硬件识别二进制的原理:计算机内部通过电信号(高电平-1低电平-0)来传递数据1.计算机的发展历程2.计算机硬件的基本组成3.各个硬件的工作原理主存储器:运算器控制器计算机的工作过程4.计算机系统的层次结构5.计算机的性能指标存储器的性能指标系统整体的性能指标......
  • 王道408--CN---计算机网络体系结构
    一、考点分布1、选择题2、大题二、性能指标速率速率=数据率=数据传输率=⽐特率单位是b/s,kb/s,Mb/s,Gb/s,Tb/s带宽1、带宽<=>某个信号具有的频带宽度。单位Hz2、带宽<=>表示⽹络的通信线路传输数据的能⼒=单位时间内从⽹络中某信道所能所能通过的“最⾼数据率......
  • 10408 - Farey sequences - UVa
    题目要求:给定一个数n,求1—n之间有多少对互质的数,phi【i】数组表示i之前有多少个和i互质的数,a【i】表示前phi【1】+phi【2】+……+phi【i】;a【n】数组就是1---n之间互质的数的对数。。#include<stdio.h>#include<string.h>longlonga[1000010],phi[1000010];longlongn,i,j;i......
  • 【舞台灯方案】LED驱动恒流芯片pwm深度调光APS54085降压IC
    APS54085是一款PWM工作模式,高效率、外围简单、内置功率MOS管,适用于5-100V输入的高精度降压LED恒流驱动芯片。最大电流2.0A。APS54085可实现线性调光和PWM调光,线性调光有效电压范围0.52-2.55V.PWM调光频率范围100HZ-30KHZ。APS54085工作频率可以通过RT外部电阻......
  • 汇编语言
    汇编语言1.1.1    汇编语言有3类指令组成:汇编指令,机器码的助记符,有对应的机器码伪指令,没有对应的机器码,由编译器执行,计算机不执行其它符号,如加减乘除寄存器:    CS和IP这两个寄存器指向的地址是CPU将要执行的指令,其中,CS寄存器是段地址,IP是偏移地址。    栈顶......
  • 王道408---OS---文件管理
    一、文件的数据结构文件目录项/FCB一个FCB就是一个文件目录项FCB的有序集合称为"文件目录"FCB实现了文件名和文件之间的映射。使用户(用户程序)可以实现“按名存取”。FCB主要记录⽤来记录⽂件的名字,索引节点指针以及其他⽬录项的层级关联关系索引节点(简称i结点inode)索引......
  • 王道408---CS---内存管理
    一、程序的链接与装入编译由编译程序将用户源代码编译成若干目标模块链接由链接程序将编译后形成的一组目标模块及它们所需的库函数链接在一起,形成一个完整的装入模块。逻辑地址形成的阶段1、静态链接在程序运行之前,先将各目标模块及它们所需的库函数链接成一个完整的装配......