Министерство образования Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ASSEMBLER IBM PC
Лабораторная работа № 1
Ассемблирование и отладка готовых программ.
Изучение системы команд и способов адресации операндов
Группа АМ-215
Работу выполнил: Цыбиков Д.Б.
Работу проверил:
Афанасьев В. А.
Новосибирск 2004
Рис. 1. Диаграмма расположения сегментов программы Mov.exe в памяти
Start |
Stop |
Length |
Name |
Class |
00000H |
0005AH |
0005BH |
_TEXT |
CODE |
00060H |
0006DH |
0000EH |
_DATA |
DATA |
00070H |
0016FH |
00100H |
STACK |
STACK |
Program entry point at 0000:0000
Рис. 2. Диаграмма расположения сегментов программы Logical.exe в памяти
Start |
Stop |
Length |
Name |
Class |
00000H |
00048H |
00049H |
_TEXT |
CODE |
00050H |
00055H |
00006H |
_DATA |
DATA |
00060H |
0015FH |
00100H |
STACK |
STACK |
Program entry point at 0000:0000
Turbo Assembler Version 4.1 15/03/04 08:58:45 Page 1
MOV.ASM
1
2
3 IDEAL
4 0000 MODEL small
5 0000 STACK 256
6 =0210 value = 528
7 0100 DATASEG
8 0000 00 exCode DB 0
9 0001 01 02 04 b_x DB 1,2,4
10 0004 0008 0010 0020 0040 w_x DW 8,16,32,64
11 000C Label b_var byte
12 000C 1234 w_var DW 1234h
13 000E CODESEG
14 0000 Start: ;mov ax,@data ;Установка в ds адреса
15 0000 B8 0000s mov ds,@data ;сегмента данных
**Error** MOV.ASM(16) Illegal use of segment register
;в DS нельзя адресовать непосредственно
16 ;Непосредственная адресация
17 0003 B0 00 mov al,256 ;255=0FFh-беззнаковое число
**Error** MOV.ASM(18) Constant too large
;константа для байта лежит в диапазоне от 0 до 255
18 0005 B4 FF mov ah,-1 ;[4];-1=0FFh-отрицательное число
19 0007 B8 007D mov ax,value/5+20 ;[5];Загрузка в ах значения константного
20 ;выражения
21 000A BB 0004r mov bx,OFFSET w_x ;[6] адрес переменной w_x в bx
22 ;Регистровая и прямая адресации
23 000D 8B D0 mov dl,ax ;[7]
**Error** MOV.ASM(24) Operand types do not match
Операнды разных форматов
24 000F B0 00 mov al,,[b_x] ;al=b_x[0]=01h
**Error** MOV.ASM(25) Need address or register
Синтаксическая ошибка – лишняя запятая
25 0011 8B 16 0004r mov dx,[w_x] ;dx=w_x[0]=0008h
26 0015 8B 36 000Cr mov si,[w_var] ;si=1234h
27 0019 A0 000Cr mov al,[b_var] ;al=34h
28 001C 8A 26 000Dr mov ah,[b_var+1] ;ah=12h
29 ;Косвенная регистровая
30 0020 8B 0F mov cx,[bx] ;[13]
31 0022 C7 07 FFFE mov [word bx],-2 ;[14]
32
33 ;Базовая адресация
34 0026 8B 47 02 mov ax,[bx+2] ;[15]
35 0029 C7 47 02 0018 mov [word bx+2],24 ;[16]
36
37 ;Индексная адресация
38 002E 8B 36 0000 mov si, operand
**Error** MOV.ASM(39) Undefined symbol: OPERAND
Символ OPERAND не определен
*Warning* MOV.ASM(39) Pointer expression needs brackets
39 0032 8A 84 0001r mov al,[si+b_x] ;[18]
40 ;Базово-индексная адресация
41 0036 FF 06 0000 inc [si]
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.