Assembly TASM指向字符或位置

Assembly TASM指向字符或位置,assembly,x86,tasm,Assembly,X86,Tasm,我有一段代码如下所示: copy_line PROC near push si mov currentline_offset, 0 copy_line_copy: mov ax, buffer_len cmp buffer_offset, ax jl copy_line_tesk mov buffer_offset, 0 mov bx, sourceFHandle mov dx, offset buffer ; ad

我有一段代码如下所示:

copy_line PROC near
    push si
    mov currentline_offset, 0

copy_line_copy:
    mov ax, buffer_len
    cmp buffer_offset, ax
    jl copy_line_tesk

    mov buffer_offset, 0
    mov bx, sourceFHandle
    mov dx, offset buffer       ; address of buffer in dx
    mov cx, len                 ; kiek baitu nuskaitysim
    mov ah, 3fh             ; function 3Fh - read from file
    int 21h
    ;jc error
    cmp ax, 0
    je copy_line_end
    mov buffer_len, ax

copy_line_tesk:
        mov si, offset buffer
    add si, buffer_offset
    mov ax, ds:[si]

    mov si, offset currentline
    add si, currentline_offset
    mov byte ptr ds:[si], al

    inc currentline_offset
    inc buffer_offset
    cmp ax, 13
    jne copy_line_copy

copy_line_end:
    pop si
    ret
copy_line ENDP
其思想是读取一行,将指针指向该行的末尾,处理信息(要添加的内容),然后输出两个结果中的一个(也要添加)。然后它读取下一行并重复

关于这一点,我有两个问题: 1) 指针是指向符号还是指向位置所在的数字?(即,如果直线是,比如说,“Aerosmith”,指针是否指向“A”和“H”或“1”和“9”? 2) 我如何将这两个指针与不指向的指针进行比较(即,如果它们指向“A”和“H”,我如何比较它们的相对位置?或者,如果它们指向“1”和“9”,我如何比较字符本身?)


谢谢你的帮助。

“指针”。请具体说明你的意思。您指的是哪条指令?指的是currentline和currentline_offset,如果我没有弄错的话,指的是要比较的行的第一个和最后一个字符。
currentline
表示缓冲区的地址。所以它指向第一个字符
currentline\u offset
还表示一个地址,该地址是一个数字,表示算法在缓冲区中的距离。它根本不指向缓冲区,并且每次通过循环时都会发生变化
buffer_offset
有一个问题:它在第一次使用时没有初始化。