有人可以提供一个如何使用汇编交换 txt 文档中的 2 行的示例吗?我会用它作为例子,因为现在我可以将内容从一个 txt 文件复制到另一个,但无法弄清楚如何交换第 2 行和第 3 行,但将其他所有内容保留在一个文件
我尝试这样做,但我的程序崩溃了(这只是代码的一部分):
copy_and_swap:
call ReadLine
jc eof
mov ax, currentLine
cmp ax, line1
je swap_with_line2
cmp ax, line2
je swap_with_line1
call WriteLine
inc currentLine
jmp near copy_and_swap
swap_with_line2:
lea di, tempBuf
lea si, buf
mov cx, 128
rep movsb
call ReadLine
call WriteLine
; Įrašyti išsaugotą eilutę
lea si, tempBuf
call WriteLine
inc currentLine
jmp near copy_and_swap
swap_with_line1:
lea di, tempBuf
lea si, buf
mov cx, 128
rep movsb
call ReadLine
call WriteLine
lea si, tempBuf
call WriteLine
inc currentLine
jmp near copy_and_swap
mov ax, currentLine cmp ax, line1 je swap_with_line2 cmp ax, line2 je swap_with_line1
一旦你读完第 1 行,你就会将它与你在 swap_with_line2 例程中本地读取的第 2 行交换。因此 cmp ax, line2
je swap_with_line1
不需要存在,也不需要swap_with_line1 例程。
但是第 2 行的本地读取必须通过额外的 currentLine 增量来计算。
rep movsb
call ReadLine
call WriteLine
在此之前您不需要一个 lea si, buf
call WriteLine
吗?