这段代码在汇编中做了什么?

时间:2015-09-07 20:10:39

标签: assembly computer-architecture

有人可以解释一下吗? 请     | cs:0100 33 D2 xor dx,dx
    | cs:0102 B9 10 00 mov cx,0100)h
    | cs:0105 BE 0F 00 mov si,00FF)h
    | cs:0108 FD std
    | cs:0109 AC ARQ:lodsb
    | cs:010A 24 03和al,03)h
    | cs:010C 75 01 jne UTN
    | cs:010E 42 inc dx
    | cs:010F E2 F8 UTN:循环ARQ
    | cs:0111 90 nop

1 个答案:

答案 0 :(得分:1)

简短解释:基本上,它考虑从地址DS:0开始的256字节数组,并将包含零的字节数计入其最低位。 DX包含结果。

冗长的解释:  DX设置为零(xor dx,dx),CX是循环计数器(0100h =要检查的数组的长度),SI是数组中的索引,它从00ffh开始,即数组中的最后一个字节。循环接收由DS指示的字节AL:SI(lodsb)并测试最低两位是否为零(和al,03h; jne UTN)。如果它们为零,则DX递增。索引SI由lodsb指令自动递减(“std”指令选择自动递减)。重复该循环直到CX达到零(循环ARQ)。