【问题标题】:.Copy the contents of the first string into the second string in the reverse order. (use loop). 将第一个字符串的内容以相反的顺序复制到第二个字符串中。 (使用循环)
【发布时间】:2020-12-07 13:22:55
【问题描述】:

问题:创建两个大小为 12 的字符串。使用用户输入加载其中一个字符串 字符(使用循环)。第二个字符串应保持空白。将第一个字符串的内容以相反的顺序复制到第二个字符串中。 (使用循环) //这是我的代码。但我的字符串也以相同的顺序而不是相反的顺序存储输入。有什么问题? 包括 EMU8086.INC

.模型小

.堆栈 100H .数据

S1 DB 3 DUP(?),  '$'
S2 DB 3 DUP(?),  '$' 

.代码

MOV AX,@DATA 
MOV DS,AX

MOV AH,1
MOV SI,0
MOV CX,3


_IN: 
    INT 21H
    MOV S1[SI],AL
    INC SI

LOOP _IN  

PRINTN
MOV SI,0  
MOV DI, 2 
MOV CX, 3

_COPY:
    MOV AL,S1[SI] 
    MOV S2[DI],AL
    INC SI
    DEC DI

LOOP _COPY    

LEA BP,S2


MOV AH,9
INT 21H  




EXIT:
 MOV AH,4CH
 INT 21H
 

结束

【问题讨论】:

  • 输入和复制对我来说看起来不错,除了问题说大小 12 但你只使用 3。不是minimal reproducible example,因为你没有描述运行它时实际得到的东西,以及您使用调试器看到的内容。

标签: assembly emu8086


【解决方案1】:

就像@Peter Cordes 在评论中已经告诉你的那样,输入和复制都很好。

但是显示结果有错误:

LEA BP,S2
MOV AH,9
INT 21H  

这个 DOS 函数需要 DX 寄存器中的指针,而您不小心使用了 BP,在这种情况下会包含垃圾!

LEA DX, S2
MOV AH, 09h
INT 21h

【讨论】:

    猜你喜欢
    • 2016-03-29
    • 2018-03-13
    • 1970-01-01
    • 2020-02-14
    • 2016-02-19
    • 2020-02-17
    • 1970-01-01
    • 2018-04-23
    • 2022-01-19
    相关资源
    最近更新 更多