张狂的暑假学习之 汇编入门学习笔记 (一)
参阅:《汇编语言》 王爽 榜首,二章
一、基础知识
1. 用汇编语言编写程序的作业进程
汇编实质便是为了便利程序员,把二进制代码用汇编指令来表明
汇编指令—————-> 编译器 —————->机器码—————-> 计算机履行
mov ax, bx 100010001
……………. ……………
2. 汇编语言的组成
汇编由下面3类指令组成
(1)汇编指令:如mov, add 等,有着对应的机器码.
(2)伪指令:没有对应的机器码,由编译器履行,计算机不履行
(3)其他符号:如+、-、*、/ 等由编译器辨认,没有对应的机器码。
3. 指令和数据
指令和数据,存在存储器中没有差异。比方同一段二进制1000100111011000
cpu能够把它看作指令 mov ax, bx 也能够看作数据 89D8H
4. 位,字节、字(word)、字长、存储单元
字节:由8位组成
字(word):计算机在同一时间内处理的一组二进制数称为一个计算机的“字”,巨细由cpu决议,如8086cpu便是16位即2个字节。
字长:便是字的长度。
存储单元:存储器被划分红若干个存储单元,巨细为8位即一个字节。如内存最小单元便是一个字节,[0]中便是一个字节。
5.CPU总线
外部总线
地址总线:决议CPU的寻址才能。8086CPU有20根地址总线寻址才能是2^20即1MB。
数据总线:决议CPU与其他器材(如内存,显卡)进行数据传输的传输量。8086CPU有16根地址总线(便是字长)。
操控总线:决议CPU对体系中其他器材(如内存,显卡)的操控才能。
6. 地址空间
电脑由许多器材组成。如内存条,网卡,显卡。他们都有内存的。它们都与cpu总线相连。CPU对它们进行读或写的时分都是经过操控线宣布内存读写指令。也便是说CPU在操 控它们的时分,把它们都当作内存看待,把它们总的当作一个由若干存储单元组成的逻辑存储器,这个存储器便是内存地址空间(便是说CPU的地址空间,不仅仅是内存条的内存,而是电脑上一切的存储器)
如:
00000~9FFFF 主存地址空间(内存条)
9FFFF~A0000 显存地址空间
C0000~FFFFF 各类ROM地址空间(如主板BIOS,显卡BIOS)
二、寄存器
前面讲的总线都是对cpu外部来讲的外部总线。cpu 的运算器、操控器、寄存器都是靠内部总线相连的
运算器:进行信息的处理
存储器:进行信息存储
操控器:操控各个器材进行各种
关于汇编程序来说,CPU中首要的部件是寄存器。
如8086CPU有14个寄存器:
ax, bx, cx, dx, si, di, sp, bp, ip, cs, ss, ds, es ,psw
ax,bx,cx,dx, 用来寄存一般数据。巨细是16位即2个字节
cs是代码段地址寄存器
ip是指令指针寄存器,寄存偏移地址
ds是数据段寄存器
1.通用寄存器
ax,bx,cx,dx, 用来寄存一般数据。巨细是16位即2个字节
8086CPU为了兼容上一代的8位CPU,ax,bx,cx,dx都能够分红两个独立的寄存器
AX 可分为 AH (AX的高8位)和 AL(AX低8位)
同理BX 可分为 BH 和BL 、CX 可分为CH 和 CL 、DX可分为DH和AL
2.几条汇编指令
mov ax, 18 ax=0018H
mov ah, 78 ah=0078H
add ax, 8 ax = ax+008H
mov ax, bx ax = bx
add ax, bx ax = ax + bx
3. 8086CPU给出物理地址的办法
8086CPU地址总线有20根,而8086是16位的CPU,只能一次性处理传输和暂时存储16位。
8086CPU采用了用两个16位地址组成一个20位物理地址的办法便是:
物理地址 = 段地址 * 16 + 偏移地址
4. 段寄存器
8086CPU 有4个段寄存器 CS、DS、SS、ES
(1)cs和ip
cs是代码段地址寄存器
ip是指令指针寄存器,寄存偏移地址
不能用 mov cs, 1000H mov ip, 0 来修改段寄存器
要用jmp指令如
jmp 2AE3:3 把cs改成2AE3H 把ip改成003H
假如只想改ip用如下指令
jmp 0 或许jmp ax
特别注意: cs=0001H ip=0000H
与 cs=0000H ip=00010H 是同一个地址 ,由于物理地址 = 段地址 * 16 + 偏移地址相同。不要认为cs不同物理地址就不同。
能够经过《汇编语言》 王爽 的试验一来了解寄存器的作业