文章参考书籍:王爽《汇编语言》,观看课程:《小甲鱼零基础汇编》
本文简单的介绍了学汇编需要掌握的一些基础知识
学习内容:
-
基础知识(语言介绍,存储器简单介绍,寄存器简单介绍,寻址方式介绍)
- 编译原理了解(计算机是如何运行我们的程序的?)
一.基础知识
- 语言介绍
- 存储器简单介绍
- 寄存器简单介绍
- 寻址方式介绍
1.语言介绍
机器语言
速度快,难理解,所有的数据和算法都是01组成,非常长,看着头大
储存器可分为,易失忆性(RAM(SRAM,内存)),非易失忆性(ROM(FLASH,EEPROM,SD,磁盘))程序和数据是分开储存(CPU通过寻址的方式可获得和执行)
读取某一个存储单元的内容:地址发送(CPU发送要读的地址),
控制总线:发送读/写命令给储存器件
数据总线:发送/接收该单元发送过来的数据(数据/代码)
指令的执行,如 mov ax,2000H
1.CS:IP->mov ax,2000H(程序指针(IP)指向这条指令的首个地址,一次性读取)
2.传入CPU后,CPU执行该指令,往ax里写入2000H
3.寄存器(简单介绍,更多使用在后面会学到)
寄存器的使用
通用寄存器(相当于在C语言定义的变量可随意使用):ax,bx,cx,dx
特殊的寄存器:CS,IP;DS;SSSP;ES,BP,DI,SI,PSW
共16位,可分开储存(但是这样就只能看成二个8位寄存器,不能装8位以上的数据)
ax储存一个字型数据,al储存一个字节型数据
4.寻址方法
(段地址+偏移地址,CPU是如何找到数据和指令的)
例子:
段的概念
修改CS:IP的指向来修改程序的执行次序(跳转程序)
指令:jmp
执行完jmp之后,CS:IP的值将被改变
l
jmp ax修改的是偏移地址
5.数据,指令在内存中是怎样储存的
栈
SS:SP (栈指针,特殊寄存器)始终指向栈顶元素
指令:push,pop
使用栈的时候要初始化栈顶(如将20000h-2000Fh当成一个栈)初始化SS/IP寄存器
mov ax,2000h
mov ss,ax
mov sp,0010h;(f+1)
二.编译基本原理
.asm->.obj->.exe
源程序:伪指令+程序
.exe文件在CPU中是怎么运行的
CPU跟我们只隔了个操作系统
学习汇编是了解程序执行的根本,内在(无论外面代码多长,都是操作寄存器与内存),初次接触汇编会觉得晦涩难懂,这是正常现象
只要多去理解,多敲,多调试,就可以打开汇编的大门