Адресация информации - Assembler

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

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

Добрый вечер! Подскажите, пожалуйста... >>есть строка "qwerty uiopasdfgh jklzxcvbnm" >>Учитывая содержимое ВХ, загрузить в CL 12-й символ данных; >>Необходимо непосредственно загрузить в регистр SI порядковый номер первого пробела из цепочки данных. Есть код
.MODEL small
.STACK 100h
.DATA
label1 DB 'qwerty uiopasdfgh jklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
.CODE
 
;в ds записывем адрес начала сегмента данных, т.е. значение сегмента dataseg
mov ax,@data
mov ds,ax
;получение смещения адреса относительно начала сегмента, т.е количества байтов от начала сегмента до идентификатора адреса
mov bx,OFFSET label1
;базовая адресация
mov cl, [bx+12] ; 12-й символ
;непосредственная адресация
mov si, 7
Правильный ли он? Или я запуталась с нумерацией?

Решение задачи: «Адресация информации»

textual
Листинг программы
    mov bx,OFFSET label1
    mov si, 0
    mov ax, [bx+si]

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

  1. Загрузка адреса метки label1 в регистр bx с помощью инструкции mov bx, OFFSET label1.
  2. Установка значения 0 в регистр si с помощью инструкции mov si, 0.
  3. Загрузка значения из памяти, адрес которой равен сумме значений в регистрах bx и si, в регистр ax с помощью инструкции mov ax, [bx+si].

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

11   голосов , оценка 4.091 из 5