读《汇编语言》小结1

        近期,读了王爽的《汇编语言》1-8章,收获很多;对CPU,编程有了新的理解。

          CPU是世界上最聪明的,同时也是最笨的“大脑”。汇编程序员只需要通过改写寄存器,就可以随意控制CPU让它干各种复杂的运算;高级语言编写的应用程序,无论有多么的复杂,最终还是回归到操控寄存器。掌握了寄存器的使用,CPU就是你的傀儡。

        作为一个应用程序码农,理解了寄存器,对程序内存分配(段的划分来自于寄存器)也会有新的认识。

 

           1. 重要概念

地址总线的宽度决定了CPU的寻址能力。

数据总线的宽度决定了CPU与其它器件进行数据传输时的一次数据传输量。

控制总线的宽度决定了CPU对系统中其它器件的控制能力。(比如读写信号)

 

CPU来说,系统中所有存储器中的存储单元都处于一个统一的逻辑存储器中;这个逻辑存储器即是我们所说的内存地址空间。(统一编址)

 

段地址*16+偏移地址=物理地址

 

一段内存,可以即是代码的存储空间,又是数据的存储空间,还可以是栈空间,也可以什么也不是。关键在于CPU中寄存器的设置,即CS IPSSSPDS的指向。

 

        2.编译调试(第二章实验1

运行masm 编译出obj文件,运行link编译出exe文件。

 

运行debug调试exe文件;

Debug必用命令:

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

R  AX改变寄存器中AX的内容

 

T 单步执行

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

U DS:0000 查看数据段地址与内容,偏移地址为0000

D查看内存中的内容

D DS:0查看DS中的内容

E改写内存中的内容

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

 

        3.寄存器

AX(ah,al):(accumulator)累加器;在乘、除等指令中指定用来存放操作数。

BX(bh,bl):(base)基址;在计算机存储地址时,它经常用作基址寄存器[bx]

CX(ch,cl):(count)计数。常用来保存计数值,如在循环、位移和串处理指令中作隐含计数器。

DX(dh,dl):(data)数据。一般在作双字长运算时把DXAX组合在一起存放一个双字长数,DX用来存放高位数。

 

CS 代码段寄存器

IP 指令指针寄存器;CS:IP下一条即将执行的指令

 

DS代码段寄存器 

SI 源变址寄存器; DS:[SI],在段地址为DS中偏移地址为SI的地址

DI目的变址寄存器

(SIDI8086CPU中和BX功能相近的寄存器,用于段的偏移地址,区别是SIDI不能够拆分为 2 个独立的 8 位寄存器)。

 

SS栈段寄存器

BP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据;
SP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶;SS:SP栈顶。

 

ES附加段寄存器(可以当做对CS/DS/SS的扩展,当上述段不够用时,可以用ES

 

        4寻址方式

直接寻址

寄存器间接寻址

寄存器相对寻址

基址变址寻址

相对基址变址寻址

8.4章讲的很清楚,就不写了)

 

        5.指令

不做介绍,资料遍地是

  

        引用书中的一句话:

学习汇编,可以自由、直接地用汇编语言去操作真实的硬件,了解那些早已被层层系统软件掩盖的真相。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值