繁体   English   中英

汇编程序以反向打印行问题

[英]Assembler program to print lines in reverse problem

所以我用汇编程序编写了这个程序来从终端读取行,然后以相反的顺序打印它们。 它在大多数情况下都有效,但有些测试不正确,我不知道为什么。 正如您在下图中看到的那样,程序对于简单的输入工作正常,但较长的文本似乎会交换或其他东西。 代码:

cpu 8086
segment code 
    mov ax,data
    mov ds,ax
    mov bx,stack
    mov ss, bx
    mov sp, dno
    mov bx, line
    mov es, bx
    mov si, bx
    mov di, bx
    mov cx, 0

range:
    call nacist
    je print
    
    inc bx
    mov al, ds:[bx]
    
    inc bx
    mov ah, 0
    adc bx, ax
    call crlf
    
nacist: 
    mov AH, 0x0a
    mov DX,bx
    int 21h
    ret
    
crlf: 
    mov ds:[bx], word 13
    inc bx
    mov ds:[bx], byte 10
    inc bx
    mov es:[di], word 200
    mov ds:[bx], byte 36
    
    adc di, 200
    mov bx, di
    mov ds:[bx], di
    mov es,bx
    inc cx
    inc cx
    dec cx
    jmp range

print:    
    cmp cx, 0
    jz end
    
repeat:    
    sub di, 200 
    mov bx,di
    adc bx, 2
    call vypis
    loopne repeat
    jmp end
    
vypis:
    mov AH,9
    mov DX,bx
    int 21h
    ret
    
end: 
    hlt

segment data
    line db 100
segment stack
    resb    1024
dno: db ?

第一列是 output,右列是 output。

在这里,大多数测试都是正确的,但在更长的测试中,有些行被交换了,我不知道为什么

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM