*Warning* MOV.ASM(41) Argument needs type override
Аргумент SI нуждается в конкретизации
42 003A BB 0002 mov bx,2
43 003D 8B 80 0004r mov ax,[bx+si+w_x] ;[21]
44 0041 C7 80 0004r 0080 mov [word bx+si+w_x],128 ;[22]
45 ;Применение команды lea
46 0047 8D 9C 0004r lea bx,[w_x+si] ;[23];bx=OFFSET w_x+si
47 ;Команды push и pop
48 004B 53 push bx ;Сохранить bx и si
Turbo Assembler Version 4.1 15/03/04 08:58:45 Page 2
MOV.ASM
Команды MOV и режимы адресации.Файл Mov.asm
49 004C 56 push si ;в стеке
50 004D BB 0010 mov bx,10h ;Установить тестовые
51 0050 BE 0020 mov si,20h ;значения
52 0053 5E pop si ;Восстановить из стека
53 0054 5B pop bx ;сохранённые значения
54 0055 B4 4C Exit: mov ah,04Ch ;Ф-ция DOS 4Сh:выход из программы
55 0057 A0 0000r mov al,[exCode] ;Возврат кода ошибки
56 005A CD 21 int 21h ;Вызов DOS. Останов
57 END Start ;Конец программы/точка входа
**Error** MOV.ASM(16) Illegal use of segment register
**Error** MOV.ASM(18) Constant too large
**Error** MOV.ASM(24) Operand types do not match
**Error** MOV.ASM(25) Need address or register
**Error** MOV.ASM(39) Undefined symbol: OPERAND
*Warning* MOV.ASM(39) Pointer expression needs brackets
**Error** MOV.ASM(42) Undefined symbol: SI?
*Warning* MOV.ASM(42) Pointer expression needs brackets
*Warning* MOV.ASM(42) Argument needs type override
Файл Mov.asm
movax,[bx+2] - пересылка
Команда имеет структуру mov r, r/m с 16-битовым регистром и 8-битовым внутрикомандным смещением disp L:
Cop_w md_reg_r/m disp L
1000101_1 01_000_111 00000010
w = 1, так как команда оперирует словами
md = 01 в соответствии с таблицей «Определение эффективного адреса» (bx + d8)
операнд-приёмник: reg = 000 (ax)
операнд-источник: ячейка памяти, определяемая адресным выражением [bx+2].
r/m = 111
внутрикомандное смещение:disp L = 02h
Значение адреса disp H: disp L – 00h:02h
100010110100011100000010
Машинный код, таким образом, равен: 8B 47 02
mov [word bx+2], 24 - пересылка
Команда имеет структуру mov r/m, d с 16-битовым непосредственным операндом и 8-битовым внутрикомандным смещением disp L:
cop_w md_000_r/m disp L data L data H
1100011_1 01_000_111 00000010 00011000 00000000
w = 1 – оперируем словами
– операнд-источник константа 24 = 00 18h
– операнд-приёмник: ячейка памяти, определяемая адресным выражением [wordbx + 2]
md = 01
r/m = 111
dispL = 02h
1100011101000111000000100001100000000000
Машинный код, таким образом, равен: C7 47 02 18 00
moval,[si+b_x] - пересылка
Команда имеет структуру mov r, r/m с 8-битовым регистром и 16-битовым внутрикомандным смещением disp L:
cop_w md_reg_r/m disp L disp H
1000101_0 10_000_100 00000001 00000000
Кодировка обозначенных полей команды
w= 0 – оперируем байтом (работаем с регистром al)
- операнд-источник: [si+b_x]
- операнд-приёмник определяется как операнд в памяти по адресу EA = (al)
md= 10
reg = 000
r/m= 100
10001010100001000000000100000000
3. Машинный код, таким образом, равен: 8A 84 01 00
Файл Logical.asm
andax,[w_mask] – логическое И
Команда имеет структуру and r,r/m:
cop_w md_reg_r/m disp L disp H
0010001_1 00_000_110 00000011 00000000
w = 1 оперируем словами
- операнд-источник: [w_mask]
- операнд-приёмник определяется как операнд в памяти по адресу EA = (ax)
поля постбайта: md = 00, r/m = 110
reg = 000 (ax)
00100011000001100000001100000000
Машинный код, таким образом, равен: E8 0C 00
orbx,[w_mask] – логическое ИЛИ
Команда имеет структуру or r, r/m:
cop_w md_reg_r/m disp L disp H
0000101_1 00_011_110 00000011 00000000
w = 1 оперируем словами
- Операнд-источник: [w_mask].
- Операнд-приёмник определяется как операнд в памяти по адресу EA = (bx)
поэтому поля постбайта: md = 00, r/m = 110
reg = 011 (bx)
00001011000111100000001100000000
Машинный код, таким образом, равен: 0B 1E 03 00
rol [oper],1 – Циклический сдвиг влево
Команда имеет структуру rol r/m,1:
cop_w md_000_r/m disp L disp H
1101000_0 00_000_110 00000101 00000000
w= 0 оперируем байтом
- Операнд-источник: 1.
- Операнд-приёмник определяется как операнд в памяти по адресу EA = [oper]
поэтому поля постбайта: md = 00, r/m = 110
11010000000001100000010100000000
Машинный код команды равен D0 06 05 00
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.