📜  8086程序使用字符串指令传输字节块(1)

📅  最后修改于: 2023-12-03 14:59:06.426000             🧑  作者: Mango

8086程序使用字符串指令传输字节块

在计算机系统中,数据的传输是非常常见的操作,尤其在底层的编程中,频繁使用。在8086汇编语言中,字符串指令提供了一种高效地传输字节块的方法。

字符串指令简介

字符串指令是8086汇编语言中一类操作字节块的指令,主要包括MOVSB、MOVSW、CMPSB、CMPSW、SCASB、SCASW、LODSB和LODSW八种。可以分为两类:传输指令和比较指令。传输指令主要包含MOVSB、MOVSW、LODSB和LODSW四种,用于将指定字节块传输到目的地址;比较指令包括CMPSB、CMPSW、SCASB和SCASW四种,主要用于比较两个字节块的内容。

MOVSB

MOVSB用于从ES:DI指向的源地址(默认为DS:SI)传输一个字节到EDI指向的目标地址(默认为ES:DI),并分别将SI和DI自减(或自增)。简单说,就是把一个字节从源地址传到目的地址,然后自动移动指针。

MOVSB
MOVSW

MOVSW与MOVSB类似,只不过它传输的是一个字(两个字节)。从源地址传输一个字到目的地址,然后SI和DI自减2(或自增2)。

MOVSW
LODSB

LODSB用于从DS:SI所指的源地址取出一个字节放入AL寄存器中,然后SI自动增加或自减,默认是自增。通常用途是读入字符串并依次处理字符串中的每个字符。

LODSB
LODSW

LODSW与LODSB类似,只不过它取出的是一个字。从源地址中取出一个字,放到AX寄存器中,然后SI自动增加或自减2(默认是自增2)。

LODSW
CMPSB

CMPSB用于比较从ES:DI和DS:SI所指向的两个字节,将他们的差值存在AL中,然后DI和SI自动修改(自增或自减),用来比较字符串。

CMPSB
CMPSW

CMPSW与CMPSB类似,只不过比较的是两个字。从ES:DI和DS:SI所指向的两个字节中取出两个字节来比较,将差值存在AX寄存器中,然后DI和SI自动修改(自增或自减),用来比较字符串。

CMPSW
SCASB

SCASB用于与AL中存的字节进行比较,ES:DI中存的字节如果和AL相等,将ZF置1,否则将ZF置0,并自动修改DI。通常用于搜索某个字节是否在指定的字符串中出现过。

SCASB
SCASW

SCASW与SCASB类似,只不过它是与AX中存储的字进行比较。从ES:DI中读取一个字,将其与AX中存储的字进行比较,如果相等,将ZF置1,否则将ZF置0,然后自动修改DI。通常用于搜索某个字是否在指定的字符串中出现过。

SCASW
总结

以上是8086程序使用字符串指令传输字节块的介绍。在实际开发中,熟练掌握这些指令将对提高编程效率非常有帮助。