8086变址寄存器和字符串拷贝程序学习

这篇具有很好参考价值的文章主要介绍了8086变址寄存器和字符串拷贝程序学习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在此文用到了si和di寄存器;

8086汇编语言显示带颜色的字符串程序学习 - 使用emu8086_bcbobo21cn的博客-CSDN博客

下面单独来学习si和di寄存器;

 

SI和DI是8086CPU中和BX功能相近的寄存器;
区别:SI和DI不能够分成两个8位寄存器来使用;
下面的三组指令实现了相同的功能:
    mov bx,0
    mov ax,[bx]


    mov si,0
    mov ax,[si]


    mov di,0
    mov ax,[di]

或者,
    mov bx,0
    mov ax,[bx+123]


    mov si,0
    mov ax,[si+123]


    mov di,0
    mov ax,[di+123]


SI(source index)是源变址寄存器,
DI(destination index)是目的变址寄存器,
它们和[bx]类似,用于存放偏移地址;

si和di寄存器基本的一个应用是实现字符串的复制;下面看一下;

;把字符串复制到...位置
data segment
	db 'welcome to masm!'
	db '................'
data ends

code segment
	start:
		mov ax,data
		mov ds,ax
		mov es,ax
		
		mov si,0
		mov di,16
		
		mov cx, 8
copydata:
		mov dx,ds:[si]
		mov es:[di],dx
		add si,2
		add di,2
		loop copydata
		
code ends


end start

装入emu8086;

8086变址寄存器和字符串拷贝程序学习,汇编语言,8086,变址寄存器

进入emulate,先不run;看一下当前数据段是从07100开始,从此开始存放了16个字符;

8086变址寄存器和字符串拷贝程序学习,汇编语言,8086,变址寄存器 

后面的16个内存单元是存的.;这些是在 data segment 定义的;

8086变址寄存器和字符串拷贝程序学习,汇编语言,8086,变址寄存器 

然后run,执行完看一下,16个字符复制到了后面的16个原先存的是.的内存单元;

8086变址寄存器和字符串拷贝程序学习,汇编语言,8086,变址寄存器 

 代码有个 loop copydata ,循环什么时候结束?循环8次结束,在标号copydata之前,计数寄存器cx被赋值8;每次循环源和目的变址寄存器加2;

关于bx寄存器可参阅此,

汇编语言内存单元数据放入寄存器学习_bcbobo21cn的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-553407.html

到了这里,关于8086变址寄存器和字符串拷贝程序学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32的BRR寄存器和BSRR寄存器

    1、BRR---   bit   RESET(置0)  register   //高16位无,低16位置1为0,不能写1 2 、BSRR---   bit   SET(设置1或0)       register   //低16位设置1为0 BSRR:用于低16位的作用是让指定的IO口置1;而高16位的作用是让指定的IO口置0。  

    2024年02月11日
    浏览(38)
  • 【汇编中的寄存器分类与不同寄存器的用途】

    寄存器分类 在计算机体系结构中,8086CPU,寄存器可以分为以下几类: 1. 通用寄存器: 通用寄存器是用于存储数据和执行算术运算的寄存器。在 x86 架构中,这些通用寄存器通常包括 AX、BX、CX、DX、SI、DI、BP 和 SP。其中,AX、BX、CX 和 DX 寄存器可以分别作为累加器(accumulat

    2024年02月09日
    浏览(43)
  • 寄存器内存读写指令(二) —— 多寄存器读写 LDM / STM

    有的时候,CPU可能会遇到 a++; b++; c++,这个时候为了提升效率,CPU可能会一次将多个寄存器里的变量保存到内存中。这个时候之前介绍的 LDR / STR 指令虽然也能实现,但只能操作一个寄存器的读写。 因此,考虑到这点,下面介绍多个寄存器的读写指令 将 多个寄存器 的数据写

    2024年02月07日
    浏览(52)
  • 锁存器、D触发器、寄存器理解

    1、锁存器        锁存器对脉冲的电平敏感,也就是电平触发,在有效的电平下,锁存器处于使能状态,输出随着输入发生变化,此时它不锁存信号,就像一个缓冲器一样;在锁存器没有使能时,则数据被锁住,输入信号不起作用,此时输出一直为锁存的状态信息(锁存最后

    2024年02月09日
    浏览(35)
  • FPGA之 寄存器、触发器、锁存器

    每个slice有8个存储元素,每个存储元素如下图所示:  其中四个为DFF/LATCH,可以配置为边沿触发D型触发器或电平敏感锁存器输入上图。D输入可以通过AFFMUX, BFFMUX, CFFMUX或DFFMUX的LUT输出直接驱动,也可以通过AX, BX, CX或DX输入绕过函数发生器的 BYPASS slice输入直接驱动。当配置为锁存

    2024年01月18日
    浏览(45)
  • Arm汇编---寄存器

    寄存器:r0~r15, sp, lr, sb, sl, fp, ip, pc 条件码:eq, ne, hs, lo, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al ------------------------------------------ 一、数据寄存器 --------------------------------------------- ------------------------------------------ 二、指针寄存器 --------------------------------------------- --------------------

    2024年02月02日
    浏览(38)
  • 【寄存器实验】

    一、实验目的 1.熟悉通用寄存器的数据通路。 2.了解通用寄存器的构成和运用。 二、实验要求 掌握通用寄存器R3~R0的读写操作。 三、实验原理 实验中所用的通用寄存器数据通路如下图所示。由四片8位字长的74LS574组成R1 R0(CX)、R3 R2(DX)通用寄存器组。图中X2 X1 X0定义输出

    2024年01月18日
    浏览(34)
  • MIPS寄存器堆

    熟悉并掌握 MIPS 计算机中寄存器堆的原理和设计方法 理解源操作数/目的操作数的概念 Vivado 集成开发环境 寄存器 R0 的值恒为 0 。 1个写端口和2个读端口 名称 宽度 方向 描述 clk 1 IN 时钟信号 raddr1 5 IN 寄存器堆读地址1 rdata1 32 OUT 寄存器堆返回数据1 raddr2 5 IN 寄存器堆读地址

    2024年02月10日
    浏览(41)
  • 寄存器模型

    寄存器配置总线:通过控制端口,配置DUT中的寄存器,DUT可以根据寄存器的值来改变其行为。 uvm_reg_field:寄存器模型中最小的单位是具体存储寄存器数值的变量。 uvm_reg:比uvm_reg_field高一个级别,但依然是比较小的单位。下图为uvm_reg_field与uvm_reg_的关系: uvm_reg_block:一个比

    2024年02月02日
    浏览(33)
  • verilog——移位寄存器

    在Verilog中,你可以使用移位寄存器来实现数据的移位操作。移位寄存器是一种常用的数字电路,用于将数据向左或向右移动一个或多个位置。这在数字信号处理、通信系统和其他应用中非常有用。以下是一个使用Verilog实现的简单移位寄存器的示例: module ShiftRegister (   inpu

    2024年02月05日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包