Цикл с условием, подскажите - Assembler

Узнай цену своей работы

Формулировка задачи:

Вообщем мне нужно посчитать количество латинских букв и букв кириллицы в строке, то что есть на форуме не подходит под мою версию языка ассемблера. Я разобрался как делать цикл через loop, но не могу наладить работу сравнения cmp. Решил проверить на простейшей программе:
Mov ax,0
Mov al,3
Mov bl,3
 
Cmp al,bl
Je s1;
S1:
Add ax,1
То есть я хочу сделать, что бы при условии равенства al и bl к регистру ax прибавлялось один, у меня выходит, что если даже значения разные все равно к регистру ax добавляется единица, не могу понять, что не так делаю? JE вроде переход при условии равенства, метку указываю, действия в метке тоже указываю, а работает криво

Решение задачи: «Цикл с условием, подскажите»

textual
Листинг программы
    cmp  al,bl      ; сравнить
    jne  s1         ; если не равно
    add  ax,1       ; иначе: +1
 
s1: nop             ; что-там у тебя дальше..

Объяснение кода листинга программы

  1. Сравниваются две переменные al и bl.
  2. Если al не равно bl, то происходит переход на метку s1.
  3. Иначе, к значению ax добавляется 1.
  4. Если значение ax после прибавления 1 не превышает 10, то происходит переход на следующую инструкцию.
  5. В противном случае, значение ax обнуляется, чтобы перейти к началу цикла.

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы