汇编语言_章节总结

第一章:
汇编指令和机器指令一一对应,有编译器翻译识别,计算机无法直接识别
一个存储单元等于1字节 1字节等于8位
1KB=1024Byte(字节)
1Byte=8bit(位)
CPU中,指令和数据都是二进制形式存在
磁盘的数据,CPU无法直接使用,只能读到内存中,才能被CPU使用
CPU可以使用的数据,是在存储器中存储器被划分为很多存储单元,以0开始编号,
一个单元存储一字节,即8位
寄存器是一种比内存和二级缓存更低一层,更接近CPU的存储器
CPU进行数据读写时,必须和外部芯片进行3类信息交换:
1.地址信息 即地址总线
2.控制信息 即控制总线
3.数据信息 即数据总线
CPU多少根地址总线,就代表这个CPU地址总线的宽度为多少
就是说cpu寻址范围是2的N次方个存储单元
数据总线N根,即一次可传送N位二进制数即N位,例:
16位数据总线,可传输16位二进制,即2个字节
控制总线决定CPU对外部器件的控制能力
存储器分为:随即存储器RAM和只读存储器ROM
随即存储器,断电后数据丢失,如内存,显存
只读存储器,关机后内存不消失,如主板,网卡的BIOS
CPU对各类存储器只看做一个逻辑的存储器,每个物理上的存储器在逻辑上占有一段地址段,
CPU对其段进行操作,就是对物理存储进行操作
8086 CPU的内存地址分配:
00000—9FFFF为主存储器
A0000—BFFFF为显存地址空间
C0000—FFFFF为各类ROM地址空间
第一章检测点:
1.
寻址能力为8kb,即为8,反向推论,8kb=8192字节,CPU寻址公式:
N=地址总线宽度
M=寻址大小(单位字节)
M=2的N次方
这里M=8192,所以开平方,N就是13,2的13次方为8192字节
2.
1kb=1024b,因为1个存储单元大小为1B,所以1kb存储器可以为1024个存储单元
编号从零开始,即编号为0——1023
3.
1kb的存储器为1024个存储单元,每个存储单元1Byte,1Byte=8bit,即1024*8=8192bit位 即1024byte字节
4.
1GB=1024MB
1MB=1024KB
1KB=1024Byte
5.
地址总线宽度为16,那么寻址能力就是2的16次方,65536个存储单元,即65536Byte,即64kb
6.
1Byte=8bit 8根数据总线,一次传输8bit,即1Byte
7.
8086为16根数据总线,每次读取16bit,即2字节,1024字节,需读取512次
8.
存储器中,数据和指令都是二进制形式存在存储器中

第二章:
CPU主要有有运算器,控制器,寄存器,三部分组成
8086 CPU有14个寄存器,如AX,BX,CX,DX,SI。。。。
8086所有寄存器都是16位的,可以存放2个Byte即字节,16位二进制数
通用寄存器为4个,是:AX,BX,CX,DX
为了兼容8088 CPU,所有通用寄存器,可以单独分为两个寄存器使用,即高地址和低地址,如AX可分,AH,AL
一个字节,即8bit,可以存在8位寄存器中
一个字 word 等于2个字节,即16bit
在写一条汇编指令或寄存器时不区分大小写
mov ax,10和MOV,AX,10 一样
mov ax,18 意思是把18送入寄存器ax
mov ah,18 意思是把18送入寄存器ah
mov ax,bx 意思是把bx的值输入寄存器ax中
add ax,5  意思是将寄存器ax的值加上5
add ax,bx 意思是吧bx和ax相加,值存入ax中
H为16进制的意思
ax=0000H 
bx=0000H

8086 16位 一个寄存器能存储16个2进制数 
例如:al和ah没有关系,当ah的值超出8位时,CPU就会丢弃数据,当al的值超出8位时,CPU不会丢弃数据
但不会进位到ah寄存器中
汇编指令进行操作时,要注意双方位数和数据大小溢出问题
检测点2.1详解:
mov ax,62627           ax=F4A3H
记住,这里的62627是十进制,转换为十六进制后,就是F4A3
mov ah,31h             ax=31A3H
意思,是把31值送入ah中,并覆盖,即31A3H
mov al,23h             ax=3123h
意思,是把23值送入al中,并覆盖,即3123H
add,ax,ax             ax=6246H
意思就是把AX加上AX在送入AX中,和C语言的a+=a;一个意思
mox bx,826ch           bx=826ch
意思就是把826ch的值送入bx中
mov cx,ax              cx=6246h
意思就是把ax的值覆盖cx中
mov ax,bx              ax=826ch
意思就是把bx的值覆盖ax中
add ax,bx              ax=04d8h
意思是把bx和ax的值相加,并送入ax中,结果为104d8,
超过8086 CPU的十六位存储大小,所以抛弃1,即得04d8h
mov al,bh              ax=0482h
意思是把bh的值覆盖al中,bh为82,ax为04d8,覆盖得0482h
mov ah,bl              ax=6c82H
意思是把bl的值覆盖ah中,bl为6c,ax为0482,覆盖得6c82h
add ah,ah              ax=d882h
意思是把ah加上ah,值放入ah中,即6c+6c=d8,即得d882h
add al,6               ax=d888h
意思把6加入al中,al值为82,82+6即得88,当然是十六进制算法,最后得d888h
add al,al              ax=d810h
意思是把al加上al的值放入al中,值为110,超出al8位寄存器的大小,故只留10
结果为d810h
mov ax,cx              ax=6246h
此题作者怎么想得,最后问个最简单的,呵呵
对CPU而言,所有内存单元构成的存储空间是一个一维线性空间
CPU物理地址送入寄存器的只能是一个物理地址,如:0010
8086为16位CPU,16为CPU有以下特性
运算器一次最多处理16位数据
寄存器的宽度为16位
寄存器和运算器的通路为16位
8086有20位地址总线,即可传送20位数据,寻址能力为:2的20次方字节,即1MB
但8086为16位结构,每次处理,存储,传送都为16位,即寻址能力为2的16次方个字节,即64kb
为了不浪费使用吧,8086采用内部2个16位寄存器合成一个20位物理地址就行传输
具体为:
物理地址=段地址*16+偏移地址,注意,这里*16是16进制,和10进制*10的意义一样
例如:
段地址为1230,偏移地址为00c8 那经过运算就是123c8的20位物理地址
具体:1230*16=12300
然后:12300+00c8=123c8
十进制理解就是:
例如:12812这个数由
1000和2812组成
1000*10=10000
任何10000+2812=12812
自己慢慢理解理解就可以了!
段地址的概念,是来自CPU,来分段管理内存!
10000H——100FFH组成一个段
基础地址为10000H
段地址为1000H
大小为:
100H
这里的段地址大小,很多人都晕,确实难理解,想通就好
100H的来源:
100FFH—10000H=FFH
这个FFH,转换为10进制就255,而计算机是从零开始,那么就有0—255,256个数
再把256转换为16进制,那就是100,即大小为100H,这是最笨的方法,但初学者好理解些,呵呵
一个段地址必然是16的倍数
偏移地址为16位,16位寻址能力为64kb,一个段的最大为64kb
监测点2.2:
1.
00010H—1000FH
0010H-1000FH 有答案是这个,不知道0010H行不行,大家研究!
2.
20000H
sa*16+0000=20000
sa*16+ffff=20000
最大2000
最小1001 1000不行,最后只能1001,大家测试
8086 CPU通过段地址和偏移合成物理地址来寻址,所以段地址肯定有寄存器,
那就是:CS DS,SS,ES 4个,和前面我们说的4个通用寄存器:AX,BX,CX,DX一样
CS和IP这两个寄存器,CS为代码段寄存器,IP为指令指针寄存器,8086会从
CS*16+IP单元开始读取指令
关键要理解8086CPU的工作过程:
1.从CS:IP指向德内存单元读取指令,指令进入缓冲器
2.IP=IP+所读指令的长度,从而指向下一条指令
3.执行指令,转到步骤一,重复这个过程
记住:8086CPU加电复位后,CS和IP的设置为CS=FFFFH,IP=0000H
即CPU从内存FFFF0H单元中读取执行,也是8086CPU的第一条执行指令

debug进入方式:开始—运行——debug XP系统下

r查看当前寄存器值,修改
d查看内存地址段的内容
e修改内存地址中的内容
u将内存地址段的内容翻译为指令
t执行开始CS:IP处的指令
a输入汇编指令

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
汇编语言(各章知识点) 课程介绍 第1章 预备知识  1.1 汇编语言的由来及其特点   1 机器语言   2 汇编语言   3 汇编程序   4 汇编语言的主要特点   5 汇编语言的使用领域  1.2 数据的表示和类型   1 数值数据的表示   2 非数值数据的表示   3 基本的数据类型  1.3 习题 第2章 CPU资源和存储器  2.1 寄存器组   1 寄存器组   2 通用寄存器的作用   3 专用寄存器的作用  2.2 存储器的管理模式   1 16位微机的内存管理模式   2 32位微机的内存管理模式  2.3 习题 第3章 操作数的寻址方式  3.1 立即寻址方式  3.2 寄存器寻址方式  3.3 直接寻址方式  3.4 寄存器间接寻址方式  3.5 寄存器相对寻址方式  3.6 基址加变址寻址方式  3.7 相对基址加变址寻址方式  3.8 32位地址的寻址方式  3.9 操作数寻址方式的小结  3.10 习题 第4章 标识符和表达式  4.1 标识符  4.2 简单内存变量的定义   1 内存变量定义的一般形式   2 字节变量   3 字变量   4 双字变量   5 六字节变量   6 八字节变量   7 十字节变量  4.3 调整偏移量伪指令   1 偶对齐伪指令   2 对齐伪指令   3 调整偏移量伪指令   4 偏移量计数器的值  4.4 复合内存变量的定义   1 重复说明符   2 结构类型的定义   3 联合类型的定义   4 记录类型的定义   5 数据类型的自定义  4.5 标号  4.6 内存变量和标号的属性   1 段属性操作符   2 偏移量属性操作符   3 类型属性操作符   4 长度属性操作符   5 容量属性操作符   6 强制属性操作符   7 存储单元别名操作符  4.7 表达式   1 进制伪指令   2 数值表达式   3 地址表达式  4.8 符号定义语句   1 等价语句   2 等号语句   3 符号名定义语句  4.9 习题 第5章 微机CPU的指令系统  5.1 汇编语言指令格式   1 指令格式   2 了解指令的几个方面  5.2 指令系统   1 数据传送指令   2 标志位操作指令   3 算术运算指令   4 逻辑运算指令   5 移位操作指令   6 位操作指令   7 比较运算指令   8 循环指令   9 转移指令   10 条件设置字节指令   11 字符串操作指令   12 ASCII-BCD码调整指令   13 处理器指令  5.3 习题 第6章 程序的基本结构  6.1 程序的基本组成   1 段的定义   2 段寄存器的说明语句   3 堆栈段的说明   4 源程序的结构  6.2 程序的基本结构   1 顺序结构   2 分支结构   3 循环结构  6.3 段的基本属性   1 对齐类型   2 组合类型   3 类别   4 段组  6.4 简化的段定义   1 存储模型说明伪指令   2 简化段定义伪指令   3 简化段段名的引用  6.5 源程序的辅助说明伪指令   1 模块名定义伪指令   2 页面定义伪指令   3 标题定义伪指令   4 子标题定义伪指令  6.6 习题 第7章 子程序和库  7.1 子程序的定义  7.2 子程序的调用和返回指令   1 调用指令   2 返回指令  7.3 子程序的参数传递   1 寄存器传递参数   2 存储单元传递参数   3 堆栈传递参数  7.4 寄存器的保护与恢复  7.5 子程序的完全定义   1 子程序完全定义格式   2 子程序的位距   3 子程序的语言类型   4 子程序的可见性   5 子程序的起始和结束操作   6 寄存器的保护和恢复   7 子程序的参数传递   8 子程序的原型说明   9 子程序的调用伪指令   10 局部变量的定义  7.6 子程序库   1 建立库文件命令   2 建立库文件举例   3 库文件的应用   4 库文件的好处  7.7 习题 第8章 输入输出和中断  8.1 输入输出的基本概念   1 I/O端口地址   2 I/O指令  8.2 中断   1 中断的基本概念   2 中断指令   3 中断返回指令   4 中断和子程序  8.3 中断的分类   1 键盘输入的中断功能   2 屏幕显示的中断功能   3 打印输出的中断功能   4 串行通信口的中断功能   5 鼠标的中断功能   6 目录和文件的中断功能   7 内存管理的中断功能   8 读取和设置中断向量  8.4 习题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值