Другие языки программирования и технологии

Программисты, знающие ассемблер, помогите.

Подпишите пожалуйста к каждой строчке, что она означает.

.model small
.data
A dw 2438h
B dw 1325h
R1 dw ?
R2 dw ?

.code
start:
mov ax,@data
mov ds,ax
;1. Переставить 1-ю и 3-ю тетрады в слове А
mov ax,A
mov dx,ax
and ax,0F0Fh
mov cl,8
ror dx,cl
and dx,0F0F0h
or ax,dx
mov R1,ax
;2. Сложить А и В в двоично-десятичном виде
mov al,byte ptr A
add al,byte ptr B
daa
mov byte ptr R2,al
mov al,byte ptr A+1
adc al,byte ptr B+1
daa
mov byte ptr R2+1,al

mov ax,4C00h
int 21h
end start
code ends
.model small; - директива что у нас будет .com файл ( не больше 64Кб)
.data ; - начало сегмента данных
A dw 2438h ; - присваиваем переменной А размером двойной слово (4байта) значение 2438 в 16-ричной системе
B dw 1325h; - присваиваем переменной B размером двойной слово (4байта) 1325 в 16-ричной системе
R1 dw ? ;Оставляем место в 4 байта для переменной R1
R2 dw ?; Оставляем место в 4 байта для переменной R2

.code ; сегмент кода - исполнения
start:
mov ax,@data ; в сегмент ах заносим начало памяти, выделенную под сегмент данных.
mov ds,ax ; из ах в дс переносим, таким образом настроили дс на работу
с данными
;1. Переставить 1-ю и 3-ю тетрады в слове А
mov ax,A ;переменную А в ах ах=2438h
mov dx,ax ; из ах в дх=2438
and ax,0F0Fh ; "and" обнуляет 1й и 3й байт (считать от нуля)
mov cl,8 ; в кл регистр заносим 8
ror dx,cl ; делаем сдвиг на байт вправо дх теперь=4080
and dx,0F0F0h
or ax,dx
mov R1,ax
;2. Сложить А и В в двоично-десятичном виде
mov al,byte ptr A
add al,byte ptr B
daa
mov byte ptr R2,al
mov al,byte ptr A+1
adc al,byte ptr B+1
daa
mov byte ptr R2+1,al

mov ax,4C00h
int 21h
end start
code ends
НЕ НУ РЕАЛЬНО МНОГО КОДА, ЧТОБЫ ОПИСЫВАТЬ. а ВЕДЬ ВСЕ ЭЛЕМЕНТАРНО! ДАВАЙ ДАЛЬШЕ САМ. ЧЕМ БОЛЬШЕ НЕУЧЕЙ СРЕДИ ПРОГРАММИСТОВ, ТЕМ ЦЕННЕЕ НОРМАЛЬНЫЕ)))
Яков Скиба
Яков Скиба
193
Лучший ответ
Учебник по ассемблеру в MS DOS Вам в руки!