汇编基础

最近在学习王爽的汇编语言第四版,总结一下常用的汇编基础知识。(后续有待补充)

win7 32位虚拟机镜像百度网盘(也可以到MSDN下载)
链接:https://pan.baidu.com/s/1dAZimmjA_4jQYywMKcIyAw
提取码:lwle

Masm for Windows 集成实验环境
链接:https://pan.baidu.com/s/1ZaxH9GLsuHz2M_DpVi4GxA
提取码:1xaq


debug常用命令

  • R命令(查看、修改CPU中寄存器的值)
    -r 查看寄存器的值
    -r cs 修改cs寄存器的值

  • D命令(查看内存中的内容)
    -d 段地址:偏移地址
    -d 1000:01 查看内存100001处的内容
    -d (查看默认cs:ip的内容)
    -d 段地址:偏移地址 结尾偏移地址
    -d 1000:0 9 查看10000-10009的内容

  • E命令(改写内存中的内容)
    -e 1000:10 0 1 2 3 4 5 从1000:10开始向内存写入0 1 2 3 4 5
    -e 1000:50 1 ‘a’ 2 ‘b’ 写入字符实际上是写入ASCII码
    -e 1000:10 从1000:10开始写入

  • U命令(查看机器码对应的汇编指令)
    -u 1000:0 查看1000:0处的机器码对应的汇编指令

  • T命令(执行当前指令。执行CS:IP指向的指令,并使CS:IP指向下一条指令)

  • A命令(以汇编指令的形式在内存中写入机器指令)
    -a 1000:0 在1000:0处写汇编指令
    1000:0000 mov ax,1
    1000:0003 mov bx,2
    1000:0006 add ax,bx

  • Q命令(退出debug,返回到command中)


数据单位

1字节(byte) = 8位(bit)、ax=16位=2个字节

在16位的系统中(比如8086微机) 1字 (word)= 2字节(byte)= 16(bit)
在32位的系统中(比如win32) 1字(word)= 4字节(byte)=32(bit)
在64位的系统中(比如win64) 1字(word)= 8字节(byte)=64(bit)

寄存器

1.通用寄存器
一般通用寄存器都有AX、BX、CS、DX。通常用来存放一般性的数据。

2.段寄存器
8086CPU中有4个段寄存器:CS、DS、SS、ES
CS和IP:CS为代码段寄存器,IP为指令指针寄存器(个人理解 地址:偏移 CS用来存放指令的短地 址,IP存放指令的偏移地址)
段地址x16+偏移地址=物理地址
DS和[address]:通常用来存放要访问数据的段地址。

SS:SP:段寄存器SS和寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在SP中。任何时刻,SS:SP指向栈顶元素。cpu从SS何SP中得到栈顶的地址。

CX寄存器:一般用于Loop指令(循环指令),CX中存放的是循环的次数
例:
mov cs,11
s: ax,ax (S=标号、所标识的地址)
loop s
执行顺序->先判断cx是否=0,如果不是cx-1,然后执行循环。

最基本的是PUSH(入栈)和POP(出栈)
PUSH 寄存器:将一个寄存器中的数据入栈
POP 寄存器:出栈,用一个寄存器接收出栈的数据
注:入栈和出栈的操作都是以字为单位进行的。
push指令的执行步骤:①SP=SP-2;②向SS:SP指向的字单元中送入数据
pop指令的执行步骤:①从SS:SP指向的字单元中读取数据;②SP=SP+2

对于数据段,将他的段地址放在DS中,用mov、add、sub等访问内存单元的指令时,cpu就将我们定义的数据段中的内容当做数据来访问;
对于代码段,将他的段地址放在CS中,将段中第一条指令的偏移地址放在IP中,这样CPU就将执行我们定义的代码段中的地址;
对于栈段,将他的段地址放在SS中,将栈顶单元的偏移地址放在SP中,这样CPU在需要进行栈操作的时候,比如执行push、pop指令时,就讲我们定义的栈段当做栈空间来用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值