model small ;определили модель памяти как small
.stack 128 ;выделили под программу 128 байт памяти
.data ;объявили сегмент данных
mess db 'Hello world!$' ;определили переменную типа databyte размером 1 байт
.code ;объявляем сегмент кода
main:
;следующими двумя строками мы связываем адрес сегмента данных с его
реальным расположением в памяти. Это связано с тем, что сегмент кода и сегмент данных расположены по одному и тому же адресу в памяти при инициализации программы.
mov ax,@data
mov ds,ax
;следующие три строки кода выводят на экран надпись "Hello world!"
lea dx,mess
mov ah,09h
int 21h
;последние две строчки корректно завершают программу
mov ax,4c00h
int 21h
end main
Что делает команда movds, ax?
Другие языки программирования и технологии
Что делает команда mov ds, ax ?
Заносит в регистр сегмента данных адрес начала данных.
Прямой команды mov ds,@data нет, поэтому приходится делать через ax.
Прямой команды mov ds,@data нет, поэтому приходится делать через ax.
перемещает в сегмент данных значение аккумулятора
перемещает из данные сегмента данных в регистр ах по идее
копирует в регистр ds, значение регистра ax
Ассемблер: MOV A,Rn; где n=0-7
Код:
1 1 1 0 1 rrr
где rrr=000-111
Время: 1 цикл
Алгоритм: (A) : =(Rn)
Пример:
;(A)=FAH, (R4)=93H
MOV A,R4 ;(A)=93H, (R4)=93H
Ассемблер: MOV A, <direct>
Код:
1 1 1 0 0 1 0 1
direct address
Время: 1 цикл
Алгоритм: (A) :=(direct)
Пример:
;(A)=93H, (ОЗУ [40])=10H, (R0)=40H
MOV A,40H ;(A)=10H, (ОЗУ [40])=10H, (R0)=40H
Ассемблер: MOV A,@Ri; где i=0,1
Код:
1 1 1 0 0 1 1 i
Время: 1 цикл
Алгоритм: (A) : = ((Ri))
Пример:
;(A)=10H, (R0)=41H, (ОЗУ [41])=0CAH
MOV A,@R0 ;(A)=CAH, (R0)=41H, (ОЗУ [41])=0CAH
Ассемблер: MOV A,#data
Код:
0 1 1 1 0 1 0 0
#data8
Время: 1 цикл
Алгоритм: (A) :=<#data8>
Пример:
;(A)=C9H (11001001B)
MOV A,#37H ;(A)=37H (00110111B)
Ассемблер: MOV Rn, A; где n=0-7
Код:
1 1 1 1 1 rrr
где rrr=000-111
Время: 1 цикл
Алгоритм: (Rn) : =(A)
Пример:
;(A)=38H, (R0)=42H
MOV R0,A ;(A)=38H, (R0)=38H
Ассемблер: MOV Rn, <direct>; где n=0-7
Код:
1 0 1 0 1 rrr
direct address
Время: 2 циклa
Алгоритм: (Rn) :=(direct)
Пример:
;(R0)=39H, (P2)=0F2H
MOV R0,P2 ;(R0)=F2H
Ассемблер: MOV Rn,#data; где n=0-7
Код:
0 1 1 1 1 rrr
#data8
Время: 1 цикл
Алгоритм: (Rn) :=<#data8>
Пример:
;(R0)=0F5H
MOV R0,#49H ;(R0)=49H
Ассемблер: MOV <direct>,A
Код:
1 1 1 1 0 1 0 1
direct address
Время: 1 цикл
Алгоритм: (direct) :=(A)
Пример:
;(P0)=FFH, (A)=4BH
MOV P0,A ;(P0)=4BH, (A)=4BH
Ассемблер: MOV <direct>, Rn ; где n=0-7
Код:
1 0 0 0 1 rrr
direct address
Время: 2 циклa
Алгоритм: (direct) :=(Rn)
Пример:
;(PSW)=C2H, (R7)=57H
MOV PSW,R7 ;(PSW)=57H, (R7)=57H
Ассемблер: MOV A,Rn; где n=0-7
Код:
1 1 1 0 1 rrr
где rrr=000-111
Время: 1 цикл
Алгоритм: (A) : =(Rn)
Пример:
;(A)=FAH, (R4)=93H
MOV A,R4 ;(A)=93H, (R4)=93H
Ассемблер: MOV A, <direct>
Код:
1 1 1 0 0 1 0 1
direct address
Время: 1 цикл
Алгоритм: (A) :=(direct)
Пример:
;(A)=93H, (ОЗУ [40])=10H, (R0)=40H
MOV A,40H ;(A)=10H, (ОЗУ [40])=10H, (R0)=40H
Ассемблер: MOV A,@Ri; где i=0,1
Код:
1 1 1 0 0 1 1 i
Время: 1 цикл
Алгоритм: (A) : = ((Ri))
Пример:
;(A)=10H, (R0)=41H, (ОЗУ [41])=0CAH
MOV A,@R0 ;(A)=CAH, (R0)=41H, (ОЗУ [41])=0CAH
Ассемблер: MOV A,#data
Код:
0 1 1 1 0 1 0 0
#data8
Время: 1 цикл
Алгоритм: (A) :=<#data8>
Пример:
;(A)=C9H (11001001B)
MOV A,#37H ;(A)=37H (00110111B)
Ассемблер: MOV Rn, A; где n=0-7
Код:
1 1 1 1 1 rrr
где rrr=000-111
Время: 1 цикл
Алгоритм: (Rn) : =(A)
Пример:
;(A)=38H, (R0)=42H
MOV R0,A ;(A)=38H, (R0)=38H
Ассемблер: MOV Rn, <direct>; где n=0-7
Код:
1 0 1 0 1 rrr
direct address
Время: 2 циклa
Алгоритм: (Rn) :=(direct)
Пример:
;(R0)=39H, (P2)=0F2H
MOV R0,P2 ;(R0)=F2H
Ассемблер: MOV Rn,#data; где n=0-7
Код:
0 1 1 1 1 rrr
#data8
Время: 1 цикл
Алгоритм: (Rn) :=<#data8>
Пример:
;(R0)=0F5H
MOV R0,#49H ;(R0)=49H
Ассемблер: MOV <direct>,A
Код:
1 1 1 1 0 1 0 1
direct address
Время: 1 цикл
Алгоритм: (direct) :=(A)
Пример:
;(P0)=FFH, (A)=4BH
MOV P0,A ;(P0)=4BH, (A)=4BH
Ассемблер: MOV <direct>, Rn ; где n=0-7
Код:
1 0 0 0 1 rrr
direct address
Время: 2 циклa
Алгоритм: (direct) :=(Rn)
Пример:
;(PSW)=C2H, (R7)=57H
MOV PSW,R7 ;(PSW)=57H, (R7)=57H
Получается в этом случае не имеет значение записано в скобках или нет data и ax
mov AX,data ;Настроим DS
mov DS,AX ;на сегмент данных
Так как это исключение из правил.Т.е если это сегмент,как у нас data,то если мы его командой mov куда-то пересылаем,то не имеет значение,мы всегда будем пересылать одно- его сегментный адрес, а не значения данных в нём Так?Похожие вопросы
- Помогите разобраться с форматом MOV
- Сложное уравнение (ax+b)/(cx+d)=0 на Pascal
- "mov eax,0" и "xor eax,eax" это ведь коды? Где используются "mov eax,0" и "xor eax,eax"?
- (ax−1)(bx−1) < 0 на паскаль
- BAT/CMD Подскажите, какой символ или команду использовать? С командой else у меня ни чего не выходит...
- Какие есть виды команд в PascalABC
- 3 ds MAX 2009 вапрос в нутри
- Pasal! Как найти точку пересечения двух прямых? ax+by+c=0
- Програмисты, помогите! В Турбо Паскаль составить программу для решения квадратного уравнения(ax^2+bx=c)
- Как будет выглядеть программа решения квадратного уравнения ax^2 + bx + c = 0 (Паскаль)???