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
有一个问题:它在第一次使用时没有初始化。