Пересылка в индексный регистр - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д