2019-10-21 汇编语言与汇编软件

1、机器指令 —— > 汇编语言 (易读易写)

  1. 汇编语言的作用和“汇编”一词的由来
    2) 下载nasm编译器,病学会使用它来编译汇编语言

简介:
实现处理器自动运算, 处理器必须从内存中取得命令, 并执行这些指令。
指令和被指令引用的数据在内存中都是一些或高或低的电平, 每个电平都可以看成是一个二进制(0或1),8个二进制位形成一个字节。
我们一般阅读二进制的数据都是写成了十六进制表示;
为了克服机器指令难以书写和理解的缺点,人们开始使用了助记符,
用助记符来描述指令的功能和操作数的类型,这就产生了汇编语言(Assembly language)
B8 3F 00 01 C3 01 C1
就可以写成了如下的汇编语言:
mov ax, 3FH
add bx, ax
add cx, ax
可以看出:
ax是目的操作数,源操作数是3FH。 汇编语言对大小写没有特殊的要求。
mov ax ,3fH
一般是写成;mov ax,ox3f
mov 是赋值到xxxx
add 是加
像上面使用汇编语言提供的符号写的文本叫做汇编语言源程序。
随便使用一个编辑软件来写汇编语言都是ok的。

机器执行的时候,是需要将汇编语言转化为机器指令的,这个过程叫做编译。

在汇编的时候, 汇编语言编译器的作用是将mov, add, ax, bx等这些符号组合起来,转换成类似于数值的机器指令,这个过程叫做汇编,这个是汇编的由来, 也有人称之为组合语言。

编译肯定是需要依靠 一个软件, 这个软件成为编译器,或者编译软件。

编译软件的任务就是: 读取汇编文本中的代码,将这些符号转变成二进制形式的机器指令代码。
它把这些机器代码存放到另一个文件中,叫做二进制文件或者可执行文件。

nasm编译器
直接搜索nasm下载软件安装对于window系统, linux系统直接使用命令安装nasm就可以了;
汇编语言文件后缀为 .asm , 有了源程序,就可以通过编译器将它编译成为机器码;

eg: 有汇编语言代码名字为:exam.asm ,通过编译命令:
nasm -f bin exam.asm -0 exam.bin
-f : 指定输出文件的格式(Format),
-f bin 就是要求nasm生成的文件之包含 “纯二进制”的内容,也就是除了机器能够识别的代码我,其他的什么都没有; 这样因为缺少操作系统所需要的加载和重定位信息,在windows、dos、linux上作为一个普通应用程序运行很。
-o 参数指定变异后输出(output)的文件名。


代码

编译之后的文件
用hexview查看汇编的源代码
编译只用用hexview查看

编译之前源代码很长,编译只会源代码很短;

这些字符串都是用对应的ascall码进行对应上的, 所以, 对应上来,源代码就会很长,之后机器指令,并且用16进制表示,右边就没有其他的意思了。

fixVhdWr 工具箱虚拟硬盘写入数据
要求: 将程序写到硬盘的主引导扇区里(0面0道1扇区), 所以,这里就需要用到fixVhdWr 工具写数据;
NOTE: fixVhdWr只是针对固定尺寸的VHD。

通过virtualbox创建一个虚拟机,最好不要选择window,都选择other等; 硬盘选择固定大小;


2019-10-21 汇编语言与汇编软件_第1张图片
上面对应的vhd文件的信息展示

通常: 一个扇区的尺寸是512字节,可以看成一个数据块。 所以某种意义上来说, 硬盘是一个典型的块(block)设备。

采用磁头、磁道和扇区这种模式来访问硬盘的方法称为CHS模式, 但不是很方便。
如果一大堆数据要写,还得注意磁头号、磁道号和扇区号不要超过接线。

所以,后来引入了逻辑块地址(Logic Block Address, LBA)的概念, 现在的磁盘都是支持LBA模式。

LBA模式是由硬盘控制器在硬件一级上提供支持,所以效率很高,兼容性很好。

LBA模式不考虑扇区的物理位置(磁头号,磁道号),而是将它们统一组织起来统一编号;这样就可以将原来的扇区组织成为逻辑扇区。切都是唯一的逻辑扇区号。

扇区的在编号时, 都是以柱面为单位。 即为: 先是0面0道,接着是1面0道,知道所有的盘面的0磁道处理完之后,在处理下一个柱面。原因: 加快硬盘的访问速度,最好是尽可能的不移动磁头。
LBA == C磁头总数 每道扇区数 + H*每道扇区数+(S-1)

所以,我们应该常常看到的更多应该是0扇区,再到1扇区。。。。

需要去看一下硬件的磁盘内容;

有关计算机硬盘在哪里会有详细讲解?
【如何形象的让自己知道软盘、磁盘、硬盘以及U盘之间的关系】
主要是磁盘和硬盘,如何更加形象的概念化到自己的脑袋里面。

你可能感兴趣的:(2019-10-21 汇编语言与汇编软件)