Как мне закончить строку в«? - PullRequest
1 голос
/ 04 мая 2019

Я должен сравнить две строки в сборке 8086, без использования строковых инструкций.Все идет нормально.Мне удалось найти что-то близкое к этому, но в задании также упоминается о необходимости завершить строки в = (0x0d, 0x0a).Я не уверен, как это сделать, и я не уверен, что код, который у меня уже есть, делает это.

Я попытался немного поискать в Интернете и с помощью некоторой документации, но либомой уровень знаний слишком низок или я просто не нашел правильного объяснения.

Вот код:

  DATA SEGMENT
        STR1 DB "ENTER FIRST STRING HERE ->$"
        STR2 DB "ENTER SECOND STRING HERE ->$"
        STR11 DB "FIRST" 13, 10 "STRING : ->$"
        STR22 DB "SECOND STRING: ->$"

        INSTR1 DB 20 DUP("$")
        INSTR2 DB 20 DUP("$")
        NEWLINE DB 10,13,"$"
        N DB ?
        S DB ?
        MSG1 DB "BOTH STRING ARE SAME$"
        MSG2 DB "BOTH STRING ARE DIFFERENT$"

  DATA ENDS

  CODE SEGMENT

        ASSUME DS:DATA,CS:CODE
  START:

        MOV AX,DATA
        MOV DS,AX

        LEA SI,INSTR1
        LEA DI,INSTR2

  ;GET STRING
        MOV AH,09H
        LEA DX,STR1
        INT 21H

        MOV AH,0AH
        MOV DX,SI
        INT 21H


        MOV AH,09H
        LEA DX,NEWLINE
        INT 21H

        MOV AH,09H
        LEA DX,STR2
        INT 21H

        MOV AH,0AH
        MOV DX,DI
        INT 21H


        MOV AH,09H
        LEA DX,NEWLINE
        INT 21H


  ;PRINT THE STRING

        MOV AH,09H
        LEA DX,STR11
        INT 21H

        MOV AH,09H
        LEA DX,INSTR1+2
        INT 21H

        MOV AH,09H
        LEA DX,NEWLINE
        INT 21H

        MOV AH,09H
        LEA DX,STR22
        INT 21H

        MOV AH,09H
        LEA DX,INSTR2+2
        INT 21H

        MOV AH,09H
        LEA DX,NEWLINE
        INT 21H

  ;STRING COMPARISON
        MOV BX,00

        MOV BL,INSTR1+1
        MOV BH,INSTR2+1

        CMP BL,BH
        JNE L1

        ADD SI,2
        ADD DI,2

      L2:MOV BL,BYTE PTR[SI]
        CMP BYTE PTR[DI],BL
        JNE L1
        INC SI
        INC DI
        CMP BYTE PTR[DI],"$"
        JNE L2

        MOV AH,09H
        LEA DX,MSG1
        INT 21H

        JMP L5

      L1:MOV AH,09H
        LEA DX,MSG2
        INT 21H



     L5:
        MOV AH,09H
        LEA DX,NEWLINE
        INT 21H

        MOV AH,4CH
        INT 21H


  CODE ENDS
  END START

1 Ответ

1 голос
/ 05 мая 2019

db "foo", 13, 10, "$"

У вас уже есть новая строка с db 10,13, "$".

Это 0xa, 0xd (противоположно обычному порядку DOS, но тот же эффект, если они обрабатываются отдельно и перемещают курсор по вертикали и горизонтали.)

...