程序员

汇编学习笔记(8086)

2018-04-15  本文已影响31人  sqatm

这个只是一个复习笔记,只是单纯的脑子笨,把之前的学过的知识捋一遍而已,并不是教什么。
如果之前没学过汇编的童鞋还是别看了,学过的看一大体回顾一下。

特别感谢 hank老师 的帮助,么么哒~

一.总线

地址总线

1.它的宽度决定了CPU的寻址能力
2.8086的地址总线宽度是20,所以寻址能力是1M(2^20)
3.一个宽度单位能提供2种电压,所以20个单位就能提供2^20中电压组合

数据总线

1.它的宽度决定了CPU的单词数据传送量,也就是数据传送速度
2.8086的数据总线宽度是16,所以单词最大传递2个字节数据(2*16)

练习题

二.寄存器

字和字节

字节:byte,1个字节由8bit组成,可以存储在8位寄存器中
字:word,1个字由2个字节组成,这2个字节分别称为字的高字节和低字节

8086的寻址方式

代码段 - CS和IP

mov指令不能用于设置CS、IP的值

指令的执行过程

(正在研究markdown插入视频,有会的麻烦联系我 /(ㄒoㄒ)/~~)
CPU指令执行过程 视频

注意:IP的值会先自加,然后执行命令

三.jmp指令


jmp指令 -- 练习

image

答案:
0
CS 2000H
IP 0000H
1
AX 6622H
CS 2000H
IP 0003H
2
AX 6622H
CS 1000H
IP 0003H
3
AX 0000H
CS 1000H
IP 0006H
4
AX 0000H
BX 0000H
CS 1000H
IP 0008H
5
AX 0000H
BX 0000H
CS 1000H
IP 0000H
6
AX 0123H
BX 0000H
CS 1000H
IP 0003H
7
死循环

  1. mov ax,bx
    IP修改1次
  2. sub ax,ax
    IP修改1次, ax = ax - ax = 0
  3. jmp ax
    IP修改2次 IP = 0

四.数据段 - DS和[address]

mov bx,1000H ;将段地址给bx
mov ds,bx ;把bx里面的地址值给数据段段寄存器(dx)
mov al,[0] ;将10000H(1000:0)中的内存数据赋值到al寄存器中(将DS:address中的内存数据赋值到al寄存器中)
mov [0],al ;将al中的值给 1000:0

五.栈段 - SS 和 SP

上一篇下一篇

猜你喜欢

热点阅读