汇编语言基础-寄存器(内存访问)

汇编语言基础-寄存器(内存访问)

在上一章中了解了CS,IP,[AX,BX,CX,DX]等寄存器的工作流程,直到现在还未与计算机CPU以外的器件产生通信,在这一章中我们通过了解DS,SS,SP等寄存器,将CPU与内存连接起来建立通讯

内存中字的存储

在CPU中用16位寄存器来存储一个字,高八位存放高位字节,低八位则用来存放低位字节,下图则是对于一块内存其内部详细结构,除了图中所示的排序外任意两个相邻的八位字节存储空间均可以作为一个字的存储空间。
在这里插入图片描述

DS和[address]

CPU在读写一个内存单元的过程中首先要想读取指令或者代码段一样,通过段地址+偏移地址的方式获取内存数据的物理地址,对于数据的存储来说DS则充当数据段地址的作用,并且数据段地址存储器DS只能通过【AX,BX,CX,DX】等寄存器进行赋值。对于内存数据读取汇编语言代码一般如下

MOV BX,内存数据段地址
MOV DS,BX
MOV 偏移地址,

MOV、ADD、SUB指令

在这里插入图片描述
在这里插入图片描述

数据段

对于8086CPU我们可以将一组长度位N(N<=64KB)的地址连续,起始地址位16倍数的内存单元作为数据段,访问数据段中的数据通常采用 DS[数据段地址]:[数据偏移地址] 来访问。

SS,SP寄存器

对于8086CPU其通过SS,SP两个寄存器实现了对于栈的访问,栈是一种先进后出的数据结构,只在栈顶端存在入栈以及出栈的操作,因此对于SS,SP寄存器,SS负责存放栈顶的段地址,而SP则存放当前栈顶的偏移地址,对于任意时刻SS:SP指向栈顶元素地址,同样的对于栈段寄存器SS来说,其赋值手段也仅仅通过其他寄存器给他赋值。

PUSH,POP指令

对于PUSH入栈操作CPU的执行流程如下,概括来说也就是偏移地址减二之后在写入数据

PUSH AX 
{
	SP=SP-2
 	MOV SS:SP,AX
}

对于POP出栈操作CPU的执行流程如下,概括来说也就是将数据赋值给指定地址之后在将偏移地址加二

POP
{
	MOV AX,SS:SP
	SP=SP+2
}

在这里插入图片描述

总结

对于以上的寄存器我们可以通过一张图来描述CPU与各部分寄存器的交互方式。
在这里插入图片描述

课后题3.1

在这里插入图片描述

课后题3.2

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
汇编语言中,机器指令是由0和1组成的,计算机只能理解这种机器指令。而为了简化操作,开发出了汇编语言。汇编指令是一种人类可读的指令,可以通过编译器将其翻译为机器指令,然后执行在计算机上。 要学习汇编语言,首先需要了解汇编指令是如何执行的,以及CPU如何从内存中读取和写入信息。存储器被划分为多个存储单元,每个单元存储一个字节(Byte)的信息。每个存储单元都有一个唯一的地址,用来访问该单元的内容。 在汇编语言中,使用mov指令可以将数据从一个地方移动到另一个地方。其中,mov段寄存器寄存器用于将一个寄存器的值移动到段寄存器,mov内存单元,寄存器用于将内存单元的值移动到寄存器,mov段寄存器内存单元用于将段寄存器的值移动到内存单元。 如果我们给出一个汇编程序如下: ```assembly assume cs:code code segment mov ax,0ffffH mov ds,ax mov bx,0 ; 初始化ds:bx指向ffff:0 mov dx,0 ; 初始化累加器 mov cx,12 ; 初始化循环计数器 s: mov al,[bx] mov ah,0 add dx,ax inc bx ; bx指向下一个单元,inc的功能是将寄存器中的内容加1 loop s ; 循环体 mov ax,4c00H ; 返回 int 21H code ends end ``` 我们可以看到,在这个程序中,使用了mov al,[bx]的指令将存储在[bx]地址处的值赋给了al寄存器。所以,如果机器汇编语言出栈寄存器S中的值为-1,那么在该程序中,对应的汇编指令应该是mov al,-1。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值