汇编语言 段前缀的使用

问题:将内存ffff:0~ffff:b单元中的数据复制到0:200~0:20b单元中。

assume cs:codesg
codesg segment
    mov bx,0
    mov cx,12
    s:

    mov ax,0ffffh
    mov ds,ax
    mov dl,[bx]

    mov ax,002h
    mov ds,ax
    mov [bx],dl


    inc bx
    loop s
    mov ax,4c00h
    int 21h
codesg ends
end

思路简单,利用循环,修改两次ds的值,bx可以同步,利用dl即可将一段内存地址中的内容传递到另一内存中,但是可以改进,使用段寄存器。代码如下:

assume cs:codesg
codesg segment
    mov bx,0
    mov cx,12
    mov ax,0ffffh
    mov ds,ax
    mov ax,002h
    mov de,ax
    s:
    mov dl,ds:[bx];段前缀的使用 改进程序5.8
    
    mov es:[bx],dl;//es为附加段
    
    inc bx
    loop s
    mov ax,4c00h
    int 21h
codesg ends
end

这样就可以不用每个循环修改两次ds的值,在循环外设置好ds和es 。一共省略12次设置ds的操作,效率提高。

猜你喜欢

转载自blog.csdn.net/laizhuocheng/article/details/88359753