汇编 基础概念

原创
2018/04/25 16:33
阅读数 23

在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),重复这个过程

 

 

 

展开阅读全文
jmp
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部