在CPU中
1,运算器进行信息处理
2,寄存器进行信息存储
3,控制器控制各种器件进行工作
4,内部总线连接各种器件,在他们之间进行数据的传送
8086 地址总线20条,可定位2^20个内存单元,即内存地址空间大小为2^20B=2^10K=1M
地址总线的宽度决定了CPU的寻址能力
数据总线的宽度决定了CPU与其他器件进行数据传送时的一次数据传送量
控制总线的宽度决定了CPU对系统中其他器件的控制能力
一个存储单元可以存储8个bit,即8个二进制数
加法溢出时,进位会被舍去
答案为1044C
mov ax,8226h
mov bx,ax
add ax,bx
al,ah等都会被看做独立的寄存器,不会将进位保存到ax中
答案为10A
mov ax,0
mov al,85h
add al,al
执行mov或add时,注意操作对象的位数应该一致
16位CPU
1.运算器一次最多可以处理16位的数据
2.寄存器的最大宽度是16位
3.寄存器和运算器之间的通路为16位
8086CPU加电启动或复位后,CS=FFFFH,IP=0000H,即执行FFFF0H处的命令
修改CS,IP
jmp 2AE3:3 CS=2AE3H IP=0003H
jmp ax IP=ax
数字存放的方式,1234H分别存放在ax和内存中
汇编循环求和
注意使用dw时,偏移地址需要加2
DATAS SEGMENT
;此处输入数据段代码
arr dw 1,2,3,4,5,6,7
len dw 7
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
mov cx,len
mov ax,0
mov bx,0
sum:
add ax,[bx]
add bx,2
loop sum
MOV AH,4CH
INT 21H
CODES ENDS
END START
CPU读写内存时采用物理地址=段地址X16+偏移地址的方式合成物理地址
CPU可以用不同的段地址和偏移地址形成同一个物理地址
给定段地址,仅通过变化偏移地址来进行寻址,最多可寻64kb=2^8kb个内存单元,比如给定段地址1000H,则寻址范围10000H--1FFFFH
对于8086CPU,任意时刻,CPU将CS:IP指向的内容当做指令执行,即,将从CSX16+IP单元开始,读取一条指令并执行
CPU工作过程
1,从CS:IP指向的内存单元读取指令,读取的指令进入指令缓存器
2,IP=IP+所读取的指令长度,从而指向下一条指令
3,指向命令,转到步骤(1),重复这个过程