汇编入门学习总结(一)

文章参考书籍:王爽《汇编语言》,观看课程:《小甲鱼零基础汇编》

本文简单的介绍了学汇编需要掌握的一些基础知识

本文内容较多,建议在观看时,先看一会书籍
 

学习内容:

  • 基础知识(语言介绍,存储器简单介绍,寄存器简单介绍,寻址方式介绍)
  •  编译原理了解(计算机是如何运行我们的程序的?)
 

一.基础知识

  • 语言介绍
  • 存储器简单介绍
  • 寄存器简单介绍
  • 寻址方式介绍

1.语言介绍

机器语言->汇编 (如果说机器语言为计算机而生,汇编为人类而生)
汇编只是为了更好地表达人类的思想,最终都会翻译成机器语言 (.asm->.obj->.exe)
 
基本内容:

机器语言

 

速度快,难理解,所有的数据和算法都是01组成,非常长,看着头大

汇编:
指令理解简单,基本都是英文单词如MOV表示的就是移动的意思, MOV  ax,1:把1移动到ax
 
 
汇编指令操作的对象都是寄存器和内存,理解和熟悉储存器和寄存器在计算机的存在是必要的
 
2.存储器
 

储存器可分为,易失忆性(RAM(SRAM,内存)),非易失忆性(ROM(FLASH,EEPROM,SD,磁盘))程序和数据是分开储存(CPU通过寻址的方式可获得和执行)

存储器 读写

读取某一个存储单元的内容:地址发送(CPU发送要读的地址),

控制总线:发送读/写命令给储存器件

数据总线:发送/接收该单元发送过来的数据(数据/代码)

 

指令的执行,如 mov ax,2000H

1.CS:IP->mov ax,2000H(程序指针(IP)指向这条指令的首个地址,一次性读取)

2.传入CPU后,CPU执行该指令,往ax里写入2000H

 
存储器分布
 
无论储存器有多少,CPU都认为是一块连续的空间,只是寻的地址不同
 
 
 

3.寄存器(简单介绍,更多使用在后面会学到)

寄存器的使用

通用寄存器(相当于在C语言定义的变量可随意使用):ax,bx,cx,dx

特殊的寄存器:CS,IP;DS;SSSP;ES,BP,DI,SI,PSW

共16位,可分开储存(但是这样就只能看成二个8位寄存器,不能装8位以上的数据

ax储存一个字型数据,al储存一个字节型数据

 

4.寻址方法

(段地址+偏移地址,CPU是如何找到数据和指令的)

例子:

段的概念

段可以很多,把内存进行分段(如20000h-2ffffh,可分为ffff段)某一段的首段(2000:feee)
 
 
段寄存器(程序指针)(CS:IP)

 

自动记录要传数据的长度,指令缓冲器接收的是( 代码的首地址+数据长度的指令(mov ax,123h)
2000h通过地址总线传给CPU,CPU通过数据,控制总线,将指令 (mov ax,123h) 传送过来执行

 

修改CS:IP的指向来修改程序的执行次序(跳转程序)

指令:jmp

执行完jmp之后,CS:IP的值将被改变

l

jmp ax修改的是偏移地址

 

5.数据,指令在内存中是怎样储存的

字节单元(单元):一个单元(一个单元为一个字节)
字单元:二个单元
 
DS:数据段寄存器
 
mov ax,2000h
mov ds,ax
mov [0],2fh
[0]:在确定段地址后,表示的是xxx:xxx单元(XXXX:xxxh)如上(往20000单元的第0号地址中存2fh)

 

SS:SP (栈指针,特殊寄存器)始终指向栈顶元素 

地址从上往下依次增加
在没有数据的时候:SS:SP=栈底+1

指令:push,pop

使用栈的时候要初始化栈顶(如将20000h-2000Fh当成一个栈)初始化SS/IP寄存器

mov ax,2000h

mov ss,ax

mov sp,0010h;(f+1)

 

二.编译基本原理

.asm->.obj->.exe

源程序:伪指令+程序

.exe文件在CPU中是怎么运行的

CPU跟我们只隔了个操作系统

 

学习汇编是了解程序执行的根本,内在(无论外面代码多长,都是操作寄存器与内存),初次接触汇编会觉得晦涩难懂,这是正常现象

只要多去理解,多敲,多调试,就可以打开汇编的大门

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值