почему объявление строки имеет значение в ассемблере 8086? - PullRequest
0 голосов
/ 03 мая 2020

Я хотел написать программу, которая перебирает строку и вычисляет, сколько раз встречалась буква "C", (я увеличиваю значение `` `` BX``` каждый раз, когда есть буква C) теперь код работает правильно, как этот

LEA DI, STRING
MOV CX, 6h

FOR:
    CMP CX, 0
    JE END
    cmp [DI], "C"
    jnz siPasDeC
    inc BX 
    siPasDeC:
    INC DI
    dec cx
    jmp FOR     
END: 
    ret
    hlt


STRING DB "CCKCCD"

, но когда я пишу STRING DB "CCKCCD" в первой строке, программа делает бесконечное l oop. Можете ли вы сказать мне, почему это произошло?

PS: это лучшая практика, чтобы писать "ret" и "hlt" каждый раз; потому что я не видел людей, пишущих это онлайн, но в колледже мы вынуждены писать это.

...