Посчитать количество цифр в строке - Assembler
Формулировка задачи:
Решение задачи: «Посчитать количество цифр в строке»
.model tiny .code org 100h start: lea si,msg xor bx,bx mov cx,len cntdig: lodsb sub al,'0' cmp al,9 ja skip inc bx skip: loop cntdig int 20h msg db 's1t2r3i46n5g7' len = $-msg end start
Объяснение кода листинга программы
.model tiny — это указание компилятору, что код написан для 8-битного процессора, в котором используется небольшой стек и регистры .code — это указание компилятору, что здесь находится код программы org 100h — это указание начальной точки выполнения кода в памяти (100h — это 100 байт от начала памяти) start: — это точка входа в программу lea si,msg — это команда загрузки в регистр SI адреса строки msg xor bx,bx — это команда инициализации регистра BX значением 0 (BX — это один из регистров общего назначения, который может использоваться как индексный регистр для обращения к памяти) mov cx,len — это команда загрузки в регистр CX значения длины строки (CX — это другой регистр общего назначения, который может использоваться как счётчик) cntdig: — это начало цикла, который будет выполняться до тех пор, пока не будут выполнены все условия lodsb — это команда загрузки в регистр AL очередного символа из строки msg (отсюда следует, что msg должна быть в сегменте данных) sub al,'0' — это команда вычитания из регистра AL значения '0' (которое является ASCII-значением символа, а в десятичной системе счисления этот символ — цифра 1) cmp al,9 - это команда сравнения значения регистра AL со значением 9 (в десятичной системе счисления это цифра 9) ja skip — если значение регистра AL больше или равно 9, то происходит переход к команде skip inc bx — если значение регистра AL меньше 9, то происходит увеличение значения регистра BX на 1 skip: — это команда, которая выполняется, если значение регистра AL меньше 9 loop cntdig — это команда перехода к началу цикла cntdig (этот цикл будет выполняться до тех пор, пока не будут выполнены все условия) int 20h — это команда перехода в защищённый режим и завершения работы программы (при этом возвращается управление операционной системе) msg db 's1t2r3i46n5g7' — это строка-сообщение, которую программа выводит на экран (в сегменте данных) len = $-msg — это выражение, которое вычисляет длину строки msg (в сегменте данных) end start — это конец программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д