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模板网!

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

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

相关文章

  • 【汇编中的寄存器分类与不同寄存器的用途】

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

    2024年02月09日
    浏览(50)
  • 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日
    浏览(44)
  • 寄存器内存读写指令(二) —— 多寄存器读写 LDM / STM

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

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

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

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

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

    2024年01月18日
    浏览(52)
  • 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日
    浏览(44)
  • ARM寄存器组

    CM3 拥有通用寄存器 R0‐R15 以及一些特殊功能寄存器。 R0-R7也被称为低组寄存器,所有指令可以访问它们,它们的字长为32位,复位后的初始值是不可预料的。 R8-R12也被称为高组寄存器,所有指令可以访问它们,它们的字长为32位,复位后的初始值是不可预料的。 R13寄存器中

    2024年02月10日
    浏览(48)
  • ARM 寄存器

    Cortex A 系列的 ARM 处理器共有 40 个 32 位寄存器,其中 33 个为通用寄存器,7 个为状态寄存器。用户模式和系统模式共用同一组寄存器。 一、未分组寄存器 R0~R7 有些寄存器是所有运行模式共用的,如 R0~R7,它们被称为未分组寄存器。 在所有运行模式下,未分组寄存器都指向同

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

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

    2024年02月02日
    浏览(39)
  • 常见的寄存器

    一、 常见寄存器的分类 1.通用寄存器(EAX EBX ECX EDX EBP ESP ESI EDI) 2.段寄存器(CS DS SS ES FS GS) 3.指令指针寄存器(EIP) 4.标志寄存器(EFLAGS) 二、 通用寄存器 通用寄存器分为前加上字母E表示32位寄存器,普通的32位寄存器分为高16位和低16位,低16位通用寄存器有具体名称,

    2024年02月07日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包