汇编 基础概念

在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

155213_15FY_2856757.png

 

al,ah等都会被看做独立的寄存器,不会将进位保存到ax中

答案为10A

  	mov ax,0
  	mov al,85h
  	add al,al

155504_SDvg_2856757.png

 

执行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和内存中

165746_cr34_2856757.png

 

 

汇编循环求和

注意使用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

171405_8kG9_2856757.png

 

CPU读写内存时采用物理地址=段地址X16+偏移地址的方式合成物理地址

CPU可以用不同的段地址和偏移地址形成同一个物理地址

给定段地址,仅通过变化偏移地址来进行寻址,最多可寻64kb=2^8kb个内存单元,比如给定段地址1000H,则寻址范围10000H--1FFFFH

对于8086CPU,任意时刻,CPU将CS:IP指向的内容当做指令执行,即,将从CSX16+IP单元开始,读取一条指令并执行

 

CPU工作过程

1,从CS:IP指向的内存单元读取指令,读取的指令进入指令缓存器

2,IP=IP+所读取的指令长度,从而指向下一条指令

3,指向命令,转到步骤(1),重复这个过程

 

 

 

转载于:https://my.oschina.net/ahaoboy/blog/1801042

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值