Цикл с условием, подскажите - Assembler
Формулировка задачи:
Вообщем мне нужно посчитать количество латинских букв и букв кириллицы в строке, то что есть на форуме не подходит под мою версию языка ассемблера. Я разобрался как делать цикл через loop, но не могу наладить работу сравнения cmp. Решил проверить на простейшей программе:То есть я хочу сделать, что бы при условии равенства al и bl к регистру ax прибавлялось один, у меня выходит, что если даже значения разные все равно к регистру ax добавляется единица, не могу понять, что не так делаю? JE вроде переход при условии равенства, метку указываю, действия в метке тоже указываю, а работает криво
Mov ax,0 Mov al,3 Mov bl,3 Cmp al,bl Je s1; S1: Add ax,1
Решение задачи: «Цикл с условием, подскажите»
textual
Листинг программы
cmp al,bl ; сравнить jne s1 ; если не равно add ax,1 ; иначе: +1 s1: nop ; что-там у тебя дальше..
Объяснение кода листинга программы
- Сравниваются две переменные al и bl.
- Если al не равно bl, то происходит переход на метку s1.
- Иначе, к значению ax добавляется 1.
- Если значение ax после прибавления 1 не превышает 10, то происходит переход на следующую инструкцию.
- В противном случае, значение ax обнуляется, чтобы перейти к началу цикла.