在汇编语言的串操作中,movdi,dsmoves,di这两条指令到底有什么作用?
(1)没有上下文,你无法判断这两个指令的实际含义。你看不到任何与字符串操作的直接关系。在字符串操作中,通常将两个字符串分别放在由ds:si和es:di寻址的存储器单元中,以便于字符串比较、移动和其他操作。
(2)mov,si,ds指令的意义是将数据段寄存器的段地址值赋给si,执行后:si=ds
(3)mov,di,es指令的意义是将扩展数据段寄存器的段地址值赋给di。也就是说,在执行之后,di=es
一般来说,这种指令很少在程序中使用。如果要保护ds和es的值,通常使用push-ds和push-es指令。如果要计算物理地址,还需要将段地址放入ax寄存器。当然,8086cpu给出了这样的指令。在某些情况下,可以使用您提到的两个说明。
汇编语言si、di、bx、bp、ss、ds分别是什么?怎样根据这些求物理地址?
1.什么是汇编语言sidibxbpssds?si:16位寄存器、源索引寄存器di:16as寄存器、目标索引寄存器bx:16位寄存器(可分为两个8位寄存器bh和bl)、基址寄存器bp:16位寄存器、基址指针寄存器ss:16位段寄存器,用于存储当前堆栈段的段地址。它通常与sp一起使用有一个公式:物理地址=基址,偏移地址=cs*10h(基址)ip(偏移地址)cs:16位段寄存器,它存储当前代码段ip的段地址:存储下一条要执行的指令的偏移地址lz。如果你不明白,你可以问
原文标题:汇编语言菜鸟教程 在汇编语言的串操作中,MOV DI, DS MOV ES, DI这两条指令到底有什么作用?,如若转载,请注明出处:https://www.saibowen.com/wenda/24303.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。