月度归档:2018年02月

汇编语言入门教程(三):初识Debug

什么是Debug?Debug是DOS、Windows提供的8086程序调试工具,可以查看CPU各种寄存器的内容,内存情况和机器码级跟踪程序的运行。

Debug一共有20多个命令,但我们在目前为止会使用到Debug的6个命令:

  1. R命令:查看、改变寄存器的内容
  2. D命令:查看内存中的内容
  3. E命令:改写内存中的内容
  4. U命令:将内存中的机器指令翻译成汇编指令
  5. T命令:执行一条机器指令
  6. A命令:以汇编指令的格式向内存中写入一条机器指令

Windows下的Debug

在Windows下自带提供了Debug,可以直接通过Window提供的DOS进入到Debug,可以通过开始命令,输入cmd然后进入到DOS界面后直接输入Debug后就进行Debug程序了。

Mac下的Debug

在Mac下,你需要通过Boxer这个程序来模拟DOS环境,打开后类似于这样的界面:

Boxer界面

点击Open a DOS prompt后就会弹出如下的界面,可以在这个环境下使用任何的DOS界面:

Boxer DOS界面

继续阅读

汇编语言入门教程(二):寄存器

为什么要了解寄存器

为什么了解寄存器?因为CPU是计算机的大脑,可以通过指令读写寄存器实现对CPU的控制,你试想一下如果你的大脑不能控制只能控制手和脚等,不就等于扯线木偶了?

寄存器只是CPU内部的一个器件,对于汇编来说CPU中比较重要的三个器件:

  1. 运算器:对数据进行处理
  2. 控制器:控制各种器件工作
  3. 寄存器:对数据进行储存

而在CPU内部,这三个器件包括其他器件都是靠CPU内部总线相连,这里的内部总线是指的CPU内部器件的总线,而上一章节说的总线是CPU与外部器件比如显卡、内存等器件的总线。

8086CPU

每个CPU寄存器和结构都是不相同的,而王爽《汇编语言》第三版主要讲的是在8086CPU上面操作的汇编,所以我这个笔记(教程)也是跟着王爽《汇编语言》第三版这本书学习。

在8086CPU中有14个寄存器,并且每个寄存器都是16位(2Byte),每个寄存器的名字不一样,这些寄存器的名字分别为:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。而关于这些寄存器的作用,需要用的时候再去理解,现在就当认识一下啦~

继续阅读

汇编语言入门教程(一):基础知识

前言

此文章如出现歧义或错误的地方请谅解,这篇文章是我在学习汇编的时候同时记录下来的笔记,然后通过教程的方式发表出来,因为通过这样的方式发表出来,可以锻炼自己的语言组织能力,并且能够把问题思考懂了,然后再通过初学者的角度来记录这片文章,从而巩固自己的知识。如果有任何错误歧义的地方,可以通过邮箱与我取得联系。

为什么学习汇编?

首先在现在用汇编语言来写用户层面上的应用是很少的了,当然也有一些应用比如驱动、boot loader等。既然已经很少有人用汇编写用户层面的应用了,但是为什么要学习?因为汇编语言是作用于硬件上工作的语言,有便于理解计算机工作的原理,以后学习高级语言更为有利,特别是对于反汇编、破解这一块的技术对汇编语言的学习是必须的。

机器语言

机器语言,顾名思义就是机器能看懂的语言,因为计算机智能看懂0和1,通电为1,没有通电为0,所以机器语言就是0和1组成的,也就是二进制。比如:01010000。

汇编语言

而汇编语言就是机器语言的一种表达方式,便于程序员更好的去记忆理解。比如机器码为01010000对应的汇编指令就是PUSH AX。

汇编语言包含两个部分:汇编指令、编译器指令(比如符号运算、伪指令等)。

计算机是没有办法计算加减乘除运算符的,而加减乘除是通过编译器转换成计算机能够识别的逻辑运算符(或、与、非),然后利用这些逻辑运算符的组合达到加减乘除的一个效果。

继续阅读