Są tutaj 4 kody w assemblerze. Muszę skomentować jeden z nich a nie umiem do końca. Ktoś może pomóc ?
.model small
.stack 100h
.data
dana1 db 00000111b,00000000b
dana2 db 00000101b,10011001b
.code
mov ax,@data
mov ds,ax
clc
mov al,dana1[1]
sub al,dana2[1]
das;
mov bl,al
mov al,dana1[0]
sbb al,dana2[0]
das
mov ah,al
mov al,bl

mov cl,4
xor dx,dx
clc
petla1:
push cx
mov cl,4
petla2:
rcl ax,1
rcl dx,1
loop petla2
push ax
add dl,48
mov ah,02h
int 21h
xor dx,dx
pop ax
pop cx
loop petla1

;--- zakonczenie programu
mov ah,4ch
int 21h
end

/ /

.model small
.stack 100h
.data
dana1 db 00000111b,00000000b
dana2 db 00000101b,10011001b
.code
mov ax,@data
mov ds,ax
clc
mov al,dana1[1]
sub al,dana2[1]
das
mov bl,al
mov al,dana1[0]
sbb al,dana2[0]
das
mov ah,al
mov al,bl
mov cl,4
xor dx,dx
clc
petla1:
push cx
mov cl,4
petla2:
rcl ax,1
rcl dx,1
loop petla2
push ax
add dl,48
mov ah,02h
int 21h
xor dx,dx
pop ax
pop cx
loop petla1
;--- zakonczenie programu
mov ah,4ch
int 21h

/ /

.model small
.stack 100h
.data
a dd 3f800000h ;(to jest 1.0)
b dd 40000000h ;(to jest 2.0)
c dd 40000000h ;(to jest 2.0)
d dd 3f800000h ;(to jest 1.0)
e dd 3f800000h ;(to jest 1.0)
y dd 0 ;(tu bedzie wynik 1.0=3f800000h)
code
start:
mov ax,@data
mov ds,ax
finit
fld a
fld b
fadd
fld c
fld d
fdiv
fsub
fld e
fld e
fmul fdiv fst y
push y pop ax pop bx
push ax push bx xor dx,dx
mov cl,2
petla1:
pop ax
push cx
mov cl,4
petla2:
push cx
clc
mov cl,4
petla3:
rcl ax,1
rcl dx,1
loop petla3
cmp dl,10
jge literka
add dl,48
jmp ascii
literka:
add dl,55
ascii: push ax
mov ah,02h
int 21h
pop ax
xor dx,dx
pop cx
loop petla2
pop cx
loop petla1
mov dl,104 ; kod literki 'h'
mov ah,02h
int 21h
mov ah,4ch
int 21h
end start

/ /

.data
; współrzędne punktów A, B i C
A DQ 1.0, 1.0
B DQ 3.0, 6.0
C DQ 8.0, 1.0
; stałe
dwa DW 2
.code
start:
mov ax,@data
mov ds,ax
finit
mov si,offset A
mov di,offset B
call dlugosc_odcinka
mov si,offset A
mov di,offset C
call dlugosc_odcinka
mov si,offset B
mov di,offset C
call dlugosc_odcinka
; obliczanie wartości zmiennej p
fld st
fadd st,st(2)
fadd st,st(3)
fild [dwa]
fdivp
; obliczanie pola
fsub st(1),st
fsub st(2),st
fsub st(3),st
fmulp
fmulp
fmulp
fabs
fsqrt
; na stosie kooprocesora masz pole trójkąta
; poniżej dodaj wyświetlanie wyniku
; ...
ret
dlugosc_odcinka:
; obliczanie długości boków trójkąta (wynik na stosie kooprocesora)
fld qword ptr [si]
fld qword ptr [di]
fsubp
fmul st,st
fld qword ptr [si+8]
fld qword ptr [di+8]
fsubp
fmul st,st
faddp
fsqrt
ret