《汇编语言》(王爽)笔记

汇编

目的:充分获得底层编程的体验,深可理解机械运行程序的机理。(使用8086CPU)

1.1机器语言

概念:机械指令的集合。(一串二进制,并由计算机转变成高低电平)

1.2汇编的产生

主体:汇编指令(其是机械指令便于记忆的书写格式)

寄存器:CPU中可以存储数据的器件,一个CPU有多个寄存器。

编译器:将汇编指令转成机械指令的翻译程序。

1.4存储器

1)为CPU提供指令和数据(就是我们常说的内存)。

1.5指令和数据

指令和数据都是应用上的概念,在内存和硬盘上并无任何区别。

1.6存储单元

存储器被划分为若干个存储单元(它们都是从0开始)。

计算机最小信息单位是bit。

 

1.7CPU对存储器的读写

1)CPU对数据的读写需要地址信息(地址总线),控制信息(控制总线),数据信息(数据总线)的交互。(发送电信号通过导线(总线)传送。)

 

 

 

1.8地址总线(CPU通过地址总线来指定存储器单元)

一个CPU有N根地址线,则可以说其宽度为N,最多能找2的N次方个内存单元。

 

1.9数据总线

数据总线的宽度决定了CPU与外界的数据传送速度。

1.10控制总线

1)控制总线是一些不同控制线的集合。

2)有多少控制总线就有多少种控制。(控制总线的宽度决定了CPU对外界的控制能力)

 

检测点1.1

1)13

2)1024 0 1023

3)8192(1024*8) 1024

4)1024*1024*1024 1024*1024 1024

5)64 1 16 4

6)1 1 2 2 4

7)512 256

8)二进制

1.11内存地址空间

 

寄存器

对于汇编程序员来说,CPU中主要的部件是寄存器。寄存器是CPU中程序员可以用指令读写的部件。

不同的CPU,寄存器的个数和结构都不相同。

8086CPU(14个寄存器):AX,BX, CX, DX, SI, DI, SP, BP, IP, CS, SS, DS, ES, PSW

2.1通用寄存器

1)AX, BX, CX, DX 都是通常用来存放一般性的数据(即通用寄存器)。

 

2)这些寄存器可分为高位和低位:

 

 

2.3开始汇编指令

 

/add时注意溢出则舍去/

检测点2.1:

1)F4A3H 31A3H 3123H 6246H 826CH 6246H 826CH 04D8H 0482H 6C82H D882H D888H D810 6246H

mov ax 0002Hadd ax axadd ax axadd ax ax

2.4物理地址

物理地址:每一个内存单元中的唯一地址。

2.5 16位结构的CPU

其结构特征:

 

8086要读写内存时:

 

地址加法器采用的方法:物理地址=段地址*16+偏移地址

 

“段地址*16+偏移地址=物理地址”的本质含义是:CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。(基础地址+偏移地址=物理地址)

2.8段的概念

1)CPU可以通过不同的段地址和偏移地址形成同一个物理地址。

2)仅用偏移地址寻找地址可以找到64KB个内存单元。

检测点2.2:

0010H 1000FH

10001H 20000H

2.9段寄存器

1)8086CPU有四个段寄存器:CS, DS, SS, ES

2.10CS和IP

CS和IP是8086CPU中最关键的寄存器。

CS:代码段寄存器 IP:指令指针寄存器

2.11 修改CS,IP的指令

1)8086CPU大部分的寄存器的值都可以通过mov改变,mov被称为传送指令。

但mov指令不能用于设置CS,IP的值。

2)能够改变CS,IP的指令叫转移指令。

3)最简单的转移指令是jmp指令。

用法:jmp段地址:偏移地址

功能:用指令给出的段地址修改CS,偏移地址修改IP.

特殊:仅修改IP可用“jmp 某一个合法寄存器”。(用寄存器中的值修改IP)

2.12代码段

如果要执行一个代码段内的代码,必须将指针指向代码段的开头。

 

检测点2.3:

4次,每一次指令还有一个执行“jmp ax” IP=0000h

实验一 查看CPU和内存,用机器指令和汇编指令编程

1)预备知识:Debug的使用

what:DOS、windows都提供的实模式程序的调试工具。

 

寄存器(内存访问)

3.1内存中字的存储

1)一个单元存放一个字节

字单元:存放字型数据(16位)的内存单元。

2)任何两个地址连续的内存单元的地址,N号单元和N+1号单元,可以把它们看成两个内存单元。

3.2DS和【address】

1)mov可以完成三种传送:first、将数据直接送入寄存器;second、将一个内存单元中的内容送入另一个寄存器;third、将一个内存单元的内容送入一个寄存器·。

2)执行指令时,8086CPU会自动取ds中的内存单元的段地址。

3)mov ds,1000h(是非法指令)。

-----------------------------------------------------------------------------------------------------------------------------

前62页

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值