Подсчет количества первого символа в данной строке (язык ассемблера 8086) - PullRequest
0 голосов
/ 02 ноября 2019
    MOV dh, 0    ; current charachter 
    MOV si, offset all_text   
jmp1: 
    INC si     
    MOV bx, [si-1]       
    CMP bx, [si-1]        
    JNE c1   
    INC dh        
c1:                  
    CMP [si-1], '$'     
    JNE jmp1 

    MOV AH, 2     
    MOV DL, 10     
    INT 21h


    ADD dh, 48     
    MOV ah, 2h
    MOV dl, dh       
    INT 21h        ; print num of current char

Я пытаюсь посчитать 1-й символ в данной строке, но результат всегда больше, чем мне нужно, например: input: aabaaba
output: 8
, но на выходе должно быть 5, я не мог понятьв чем проблема.

1 Ответ

0 голосов
/ 02 ноября 2019
    MOV dh, 1    ; current charachter   
 MOV si, offset all_text  

    MOV bh, [si]

jmp1:   
    inc si
    CMP bh, [si]        
    JNE c1   
    INC dh

c1:             
    CMP [si], '$'     
    JNE jmp1 

    MOV AH, 2      ; print
    MOV DL, 10     ; new line after pressing enter
    INT 21h

    ADD dh, 48     
    MOV ah, 2h
    MOV dl, dh       
    INT 21h        ; print num of current char
...