本文介绍: (2)IP=IP+所读取指令长度,从而指向一条指令;转到步骤(1),重复这个过程。总共2^16=65536=64KB个内存单元

语雀原文链接

1、CPU组成

2、通用寄存器

16位寄存器存储

image.png
image.png

16位寄存器兼容8位

image.png

image.png

wordbyte

image.png

进位问题

MOV AX,8226H
MOV BX,8226H
ADD AX,BX
AX BX都是16位寄存器,此时AX的值是多少答案:8226H + 8226H = 1044CH,但是寄存器只能放16位,AX的值是044CH
MOV AX,00C5H
ADD AL,93H
此时AX的值是多少答案:AL原始是C5H,加上93H,等于158H,但是AL只是低8位寄存器(作为一个独立的8位寄存器),最高位1会丢失丢失1也不会给AH,类似最终结果AX=0158(CPU并没有真的丢弃这个值),所以最终的AX=0058
MOV AX,00C5H
ADD AX,93H
此时AX的值是多少
AX=00C5H + 0093H = 0158H,AX是16位寄存器,能正常进位
mov ax,bl  在8位寄存器和16位寄存器之间传送数据
mov bh,ax 在16位寄存器和8位寄存器之间传送数据
mov al, 20000 8位寄存器最大可存放值为255的数据
add al,100H 将一个高于8位的数据加到一个8位寄存器中

3、地址加法

image.png

image.png

1000H * 16 + 0000H ~ 1000H * 16 + FFFFH
10000H ~ 1FFFFH
总共2^16=65536=64KB个内存单元

不同的段地址和偏移地址表示同一个物理地址

image.png

偏移地址的范围

一个段的起始地址一定是16的倍数

4、CS:IP

CS IP工作过程

image.png

image.png

image.png

  • 20位地址总线

image.png

image.png

image.png

  • IP增加

image.png

image.png

  • AX=0123H

image.png

  • 读取2000:0003处的指令

image.png

image.png

  • 读取2000:0006处的指令

image.png

image.png

  • 读取2000:0008处的指令,add ax,bx ,01D8

image.png

image.png

(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器:
(2)IP=IP+所读取指令的长度,从而指向一条指令;
(3)执行指令。转到步骤(1),重复这个过程

jmp修改CS:IP

image.png

image.png

image.png

  • 例子4:jmp同时修改CS:IP寄存器的值
    • 073F:0100 写入指令 jmp 0700:2222
    • 执行后 CS=0700 IP=2222

image.png

5、DS和[address]

DS和[address]

image.png

image.png

  • 例子3

image.png

mov add sub

mov 寄存器,数据  		比如:mov ax,8
mov 寄存器,寄存器  	比如:mov ax,bx
mov 寄存器,内存单元	比如:mov ax,[0]

mov 内存单元,寄存器	比如:mov [0],ax
mov 寄存器,内存单元	比如:mov ds,[0]

mov 段寄存器,寄存器  比如:mov ds,ax
mov 寄存器,段寄存器  比如:mov ax,ds

原文地址:https://blog.csdn.net/sinat_35615296/article/details/134819305

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_47166.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注