汇编学习和简单汇编指令

lzmghk   ·   发表于 2021-01-20 10:08:51   ·   技术文章

分享给自己一个小总结,也是帮助有需要的人。
如果是大佬请您不吝赐教,我是一个菜鸟哈

什么是汇编语言?

是一种用于电子计算机、微处理器、微控制器或其他可编程器件的机器语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,都需要用到汇编语言。
简单理解汇编语言就是直接面对机器语言,机器语言是机器指令的集合,电子计算机的机器指令是一列二进制数字0和1,表示高低电平

汇编语言的组成?

汇编语言发展至今,有以下3类指令组成
1.汇编指令:机器码的助记符,有对应的机器码。
2.伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
3.其他的符号:如+、-、*、/等,由编译器识别,没有对应的机器码。

汇编语言的核心是汇编指令,它决定了汇编语言的特性


自己浅薄理解一下二进制0—1111?
0 、1、 10、 11、 100、 101、 110、 111、 1000、 1001、 1010、 1011、 1100、 1101、 1110、 1111

其实16进制是更方便理解使用二进制。
0 、1、 2、 3、 4 、 5 、 6、 7、 8、 9、 a、 b 、c 、 d、 e、 f

如果你能跳出已有的思维,6进制,8进制,10进进制,13进制,你都可以写出来。

8进制
0、1、2、3、4、5、6、7、10、11、12、13、14、15、16、17、20….

5进制
0、1、2、3、4、10、11、12、13、14、20、、21、22、23、24、30、31…..

我以大家熟悉的10进制中6这个位数,在其他进制分别是?
二进制 110
十六进制 6
八进制 6
五进制 11

举例:

位 0 、 1

字节 0-0xFF (一个F代表二进制1111)

字 0-0xFFFF

双字 0-0xFFFFFFFF

在计算机中,每一个数据都需要给它定义类型,给它定义宽度,在内存中的宽度

这里就不讲有符号数 和无符号数

以8086CPU简单讲一讲?

CPU工作必须 有提供指令和数据 给它,那么指令和数据在储存器中存放,也就是内存。

磁盘不同于内存,磁盘数据或程序 如果不读到内存中,就无法被CPU使用

简单的说,在CPU中:

$运算器进行信息处理

$寄存器进行信息存储

$控制器控制各种器件进行工作

$内部总线连接各种器件,在它们之间进行数据的传送。

CPU里面的寄存器?

32位 16位 8位
EAX AX AL
ECX CX CL
EDX DX DL
EBX BX BL
ESP SP AH
EBP BP CH
ESI SI DH
EDI DI BH

除了这些通用寄存器之外,那么其他的寄存器每一位都有自己特定的功能。

通用寄存器 AX,CX,DX,BX,比如:AX分为AH高8位和AL低8位。

栈寄存器SS
数据段寄存器DS
代码段寄存器 CS

几条汇编指令

mov(传送指令) ,add(求和指令) , sub指令(减法指令)

mov 寄存器,数据 比如:MOV AX,8
MOV 寄存器,寄存器 比如:mov AX,Bx
MOV 寄存器,内存单元 比如:MOV AX,[0]
MOV 内存单元,寄存器 比如; MOV [0],AX
MOV 段寄存器,寄存器 比如:MOV DS,AX

add和sub指令同mov 一样,都有两个操作对象。他们也可以有以下几种形式。

ADD 寄存器,数据 比如:ADD AX,8
ADD 寄存器,寄存器 比如:ADD ax,bx
ADD 寄存器,内存单元 比如:ADD AX,[0]
ADD 内存单元,寄存器 比如:ADD [0],AX

SUB 寄存器,数据 比如:SUB AX,9
SUB 寄存器,寄存器 比如:SUB AX,BX
SUB 寄存器,内存单元 比如:SUB AX,[0]
SUB 内存单元,寄存器 比如:SUB [0],AX

jmp 无条件转移指令

jmp 1000H 段地址直接转移,转移地址的偏移量由指令给出
JMP CX 段地址间接转移,转移地址的偏移量由CX指出
JMP 1000H:2000H 段间直接转移,段地址和偏移地址由指令给出
JMP DWORD PTR[SI] 段间间接转移转移地址在SI所指地址开始的4个单元中

PUSH和POP 指令的格式:

PUSH AX
POP AX

PUSH DS (入栈) 将一个段寄存器中的数据入栈
POP es (出栈)用一个段寄存器接受出栈的数据

PUSH [0] 将一个内存单元处的字入栈(栈操作都是以字为单位)。
POP [2] 出栈,用一个内存字单元接收出栈的数据。

查看CPU和内存,用机器指令和汇编指令编程

使用 DOSBox是 DOS模拟器,使用debug调式:

        debug基本命令操作

    R命令查看、改变CPU寄存器的内容;

    D命令查看内存中的内容

    E命令改写内存中的内容

    U命令将内存中的机器指令翻译成汇编指令

    T命令命令执行一条机器指令

    A命令以汇编指令的格式在内存中写入一条机器指令

查看CPU寄存器的内容,用R命令查看

用R命令改变寄存器的内容

用D命令查看内存中的内容,可以用d段地址:偏移地址的格式来查看

用E命令写入字符

用debug的A命令以汇编的形式在内中写入机器指令

在渗透路上如何走的更远更好,期待大佬名师指路, 路漫漫其修远兮吾将上下而求索

打赏我,让我更有动力~

1 Reply   |  Until 2021-1-22 | 656 View

Yaoヽ药药
发表于 2021-1-22

没一句有用的

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.