使用汇编器交换文本文件中的 2 行

问题描述 投票:0回答:1

有人可以提供一个如何使用汇编交换 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
assembly swap dosbox low-level-code
1个回答
0
投票
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
 吗?

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.