在此文用到了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;
进入emulate,先不run;看一下当前数据段是从07100开始,从此开始存放了16个字符;
后面的16个内存单元是存的.;这些是在 data segment 定义的;
然后run,执行完看一下,16个字符复制到了后面的16个原先存的是.的内存单元;
代码有个 loop copydata ,循环什么时候结束?循环8次结束,在标号copydata之前,计数寄存器cx被赋值8;每次循环源和目的变址寄存器加2;
关于bx寄存器可参阅此,文章来源:https://www.toymoban.com/news/detail-553407.html
汇编语言内存单元数据放入寄存器学习_bcbobo21cn的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-553407.html
到了这里,关于8086变址寄存器和字符串拷贝程序学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!