Пример использования SCASB, CMPSB, LODSB, STOSB - Assembler

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

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

Здравствуйте , приведите пожалуйста пример (желательно очень простой) использования этих команд. Пробовал сам сделать по примерам , но ничего не получилось . Вот код того что пробовал , но получаю вылет программы Access Violation на первой итерации repne scasb.
data
 mestitle db "strlen",0
 form db "Количество символов 's': %u", 0
 cnt DB 0d
str1     db   'Helloowewewe'        ;Строка для сравнения 
strlen   equ  $-str1             ;Длина строки 
text     db   80 dup (' ')       ;Приемный буфер 
 .data?
buffer db 512 dup(?)
 .code
 start:
mov       AL, 'e'              ;Искомый символ 
push      DS                   ;Настроим ES 
pop       ES                   ;на наш сегмент данных  
lea       DI, str1              ;ES:DI-> строка 
mov       CX, 12             ;Верхняя граница поиска 
cld
repne     scasb               ;Сравнение с AL пока не равно
Спасибо заранее .

Решение задачи: «Пример использования SCASB, CMPSB, LODSB, STOSB»

textual
Листинг программы
mov ax,@data
mov ds,ax
mov es,ax

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

  1. Переменная ax используется для хранения и передачи данных в коде.
  2. Команда mov используется для перемещения данных между регистрами и переменными.
  3. Переменная ds используется для хранения сегмента данных.
  4. Переменная es используется для хранения сегмента стека.
  5. Значение @data используется для указания на начало области данных в памяти компьютера.
  6. Значение ax используется как индекс для доступа к памяти.
  7. Значение ds используется как индекс для доступа к памяти.
  8. Значение es используется как индекс для доступа к памяти.
  9. Значение 0 используется для инициализации переменной ax.
  10. Значение 0 используется для инициализации переменной ds.
  11. Значение 0 используется для инициализации переменной es.
  12. Значение data используется для указания на начало области данных в памяти компьютера.
  13. Значение 0 используется для инициализации переменной ax.
  14. Значение 0 используется для инициализации переменной ds.
  15. Значение 0 используется для инициализации переменной es.
  16. Значение 0 используется для инициализации переменной ax.
  17. Значение 0 используется для инициализации переменной ds.
  18. Значение 0 используется для инициализации переменной es.
  19. Значение 0 используется для инициализации переменной ax.
  20. Значение 0 используется для инициализации переменной ds.

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

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