Пересылка в индексный регистр - Assembler
Формулировка задачи:
Доброго времени суток!
Прошу помочь с кодом, мне необходимо сделать след. действия:
1: переслать адрес блока данных SIM в индексный регистр 2: переслать 3-й элемент 2-й строки SIM в регистр 3: сложить 3-й элемент блока данных Z2 и var_2 4: логическое ИЛИ между переменной в памяти var_1 и константой 3Fh
На первом пункте выдает след. ошибку:operand types do not match
На третьем:illegal memory reference
.MODEL SMALL .STACK 100h .DATA var_1 DB 11000110b var_2 DW 9FFEh var_3 DW ? var_4 DB ? N_1 DD 0FF00FFEEh N_2 DD ? String DB 'Assembler', '$' M1 DB 7,9,28,46,39,31,20,25 M2 DB 12,15,7,25,31,35,20,63 Z1 DW 48,256,300,511,31,512 Z2 DW 0EEh,99Fh,300h,51AAh SIM DB 'QWERTYUIOP' DB 'ЙЦУКЕНГШЩЗ' DB 'POIUYTREWQ' .CODE Start: mov AX, @DATA mov DS, AX xor AX, AX mov SI, 0 ;задать индекс начального элемента масссива mov BX, 0 ;задать индекс начального элемента строки mov DI, SIM [BX][SI] ;переслать адрес блока данных SIM в индексный регистр mov AL, SIM [BX+10][SI+2] ;переслать 3-й элемент 2-й строки SIM в регистр ADD Z2 [SI+2], var_2 ;сложить 3-й элемент блока данных Z2 и var_2 OR var_1, 3Fh ;логическое ИЛИ между переменной в памяти var_1 и константой 3Fh mov AH, 4Ch int 21h END Start
Решение задачи: «Пересылка в индексный регистр»
textual
Листинг программы
mov DI, word ptr SIM [BX][SI]
Объяснение кода листинга программы
DI
- это индексный регистр, который используется для обращения к элементам массива.SIM
- это массив, к которому обращаетсяDI
.BX
- это регистр, содержащий индекс первого элемента массиваSIM
.SI
- это регистр, содержащий индекс второго элемента массиваSIM
.word ptr SIM [BX][SI]
- это обращение к элементу массиваSIM
по индексам, содержащимся в регистрахBX
иSI
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д