[英]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.