汇编语言 寄存器内存访问原理解析

 更新时间:2020年01月19日 16:22:33   投稿:yaominghui  
这篇文章主要介绍了汇编语言 寄存器内存访问原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了汇编语言 寄存器内存访问原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在内存中字的存储

这段话的主要意思是:一个字=2B=16bit,CPU中是用两个内存单元储存一个字(假如获取0地址存放的字型数据,就是获取它的高位字节0+1位和低位字节0位的数据,数据由高地址位向低地址位读)

问题:

(1)0地址单元中存放的字节型数据是多少?  # 20H

(2)0地址字单元中存放的字型数据是多少?  # 4e20H

(3)2地址字单元中存放的字节型数据是多少? # 12H

(4)2地址单元中存放的字型数据是多少?   # 0012H

(5)1地址字单元中存放的字型数据是多少?  # 12aEH

结论:就是我上面说的,字型数据就是它和它的下一位地址单元的数据(数据由高地址位向低地址位读)

数据段寄存器DS和偏移量[address]

用法和cs和ip差不多,都是段寄存器的值*16+偏移量的值

为给DS数据段寄存器值

因为CPU的段寄存器都比较害羞,没法给他们直接赋值(cs代码寄存器用的是jmp cs:ip),所以段寄存器采用以下方法赋值

字的传送

问题1:

内存中的情况如下图,写出下面指令执行后寄存器ax,bx,cx中的值?

解析:

问题2:

内存中的情况如下图,写出下面指令执行后寄存器ax,bx,cx中的值?

解析:

NB的move指令

sub,add指令

数据段

我们上面操作的实际上就是数据段,具体来看下是怎样操作数据段的

累加123B0H~123BAH的内存单元的操作

小结:

(1)字在内存中存储时 ,要用两个地址连续的内存单元来存放,字的低位字节存放在低地址单元中,高位字节存放再高地址单元中。

(2)用 mov 指令要访问内存单元,可以在mov指令中只给出单元的偏移地址,此时,段地址默认在DS寄存器中。

(3)[address]表示一个偏移地址为address的内存单元。

(4)在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8位寄存器相对应。

(5)mov、add、sub是具有两个操作对象的指令。jmp是具有一个操作对象的指令。


(2) 内存中的情况如图3.6所示

各寄存器的初始值:cs=2000h,ip=0,ds=1000h,ax=0,bx=0;

① 写出CPU执行的指令序列(用汇编指令写出)。

② 写出CPU执行每条指令后,CS、IP和相关寄存器的数值。

③ 再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?

答案:我以为jmp了以后cp的值也会改变,实际上就是它jmp的内个CP:IP

指令序列

CS

IP

DS

AX

BX

初始值

2000h

0

0

0

0

1

mov ax,6622h

2000h

3h

0

6622h

0

2

jmp 0ff0:0100

ff0h

100h

0

6622h

0

3

mov ax,2000h

ff0h

103h

0

2000h

0

4

mov ds,ax

ff0h

105h

2000h

2000h

0

5

mov ax,[8]

ff0h

108h

2000h

c389h

0

6

mov ax,[2]

ff0h

10bh

2000h

ea66h

0

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 汇编实现直接插入排序的方法示例

    汇编实现直接插入排序的方法示例

    这篇文章主要介绍了汇编实现直接插入排序的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 汇编语言:比较指令、跳转指令、JCC的使用

    汇编语言:比较指令、跳转指令、JCC的使用

    这篇文章主要介绍了汇编语言:比较指令、跳转指令、JCC的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 汇编语言之寄存器(详细介绍)

    汇编语言之寄存器(详细介绍)

    这篇文章主要介绍了汇编语言之寄存器(详细介绍),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2020-01-01
  • 汇编语言段定义的使用

    汇编语言段定义的使用

    汇编语言源程序的基本结构是段,一个汇编语言源程序由若干个代码段,本文主要介绍了汇编语言段定义的使用,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • 汇编语言功能实现数据复制实例详解

    汇编语言功能实现数据复制实例详解

    这篇文章主要为大家介绍了汇编语言功能实现数据复制的实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • 最好懂的汇编语言教程,解释CPU如何执行代码

    最好懂的汇编语言教程,解释CPU如何执行代码

    这篇文章主要介绍了最好懂的汇编语言教程,解释CPU如何执行代码。计算机真正能够理解的是低级语言,它专门用来控制硬件。汇编语言就是低级语言,直接描述/控制 CPU 的运行。如果你想了解 CPU 到底干了些什么,以及代码的运行步骤,就一定要学习汇编语言。
    2022-12-12
  • 汇编语言 跳转指令与C语言的条件分支

    汇编语言 跳转指令与C语言的条件分支

    这篇文章主要介绍了汇编语言 跳转指令与C语言的条件分支,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 汇编用串检测scasb寻找数的位置实现

    汇编用串检测scasb寻找数的位置实现

    这篇文章主要介绍了汇编用串检测scasb寻找数的位置实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 汇编语言入门教程阮一峰版

    汇编语言入门教程阮一峰版

    汇编语言是一种最低级、最古老、不具有移植性的编程语言,它能够直接访问计算机硬件,所以执行效率极高,占用资源极少,一般用于嵌入式设备、驱动程序、实时应用、核心算法等
    2020-01-01
  • C语言ASM汇编内嵌语法详解

    C语言ASM汇编内嵌语法详解

    这篇文章主要介绍了C语言ASM汇编内嵌语法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01

最新评论