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

    科技2022-07-11  90

    problem:

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

    solve

    0-b和0-b,这两段内存的长度相同,那么我们只需要循环12次就可以了→mov cx,12我们尽可能简化问题,把两段都变成从0开始→0:20x ~ 0:20b变成0020:0 ~ 0020:b assume cs:s1 s1 segment mov bx,0 mov cx,12 s: mov ax,0ffffh mov ds,ax mov dl,[bx] mov ax,0020 mov ds,ax mov [bx],dl inc bx loop s mov ax,4c00h int 21h s1 ends end

    上述方法循环一次改变两次ds的值,这样虽然正确但是效率不高。 这让我想到了空间换取时间的方法:

    分别使用两个段寄存器存放两者的段地址这里用到了显式给出段地址 assume cs:s1 s1 segment mov ax,0ffffh mov ds,ax mov ax,0200h mov es,ax mov bx,0 mov cx,12 s: mov dl,[bx] mov es:[bx],dl inc bx loop s mov ax,4c00h int 21h s1 ends end

    Processed: 0.009, SQL: 8