Сделать вычитание 2х 4-х байтных 16ричных чисел. Результат поместить в отдельный массив. Проверить результат на знак и, если результат отрицательный, произвести его инвертирование.
Ассемблер ввод данных с клавиатуры и вывод результата на экран
CSEG SEGMENT PARA 'CODE' USE16
ASSUME CS:CSEG, DS:DSEG, ES:DSEG
PRIMER PROC NEAR
START: MOV AX,DSEG
MOV DS,AX
MOV ES,AX
;----- программа определения четного числа-----
;----------начало программы---------
LEA DX, msdg1
MOV AH,09H
INT 21H
MOV CX,4
M1:
LEA DX, MSDG2
MOV AH,09H
INT 21
MOV AH,01H
INT 21H
cmp al,40h
JNS M2
SUB AL,30H
JMP M3
M2:
SUB AL,37H
M3:
MOV DH,AL
SHL DH,4
MOV AH,01H
INT 21H
cmp al,40h
JNS M4
SUB AL,30H
JMP M5
M4:
SUB AL,37H
M5:
ADD DH,AL
MOV [si],dh
inc si
LOOP M1
LEA DX, msdg5
MOV AH,09H
INT 21H
MOV cx,4
M13: LEA DX, MSDG4
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
cmp al,40h
jns M8
sub al,30h
jmp M9
M8:SUB AL,37H
M9:MOV DH,AL
SHL DH,4
MOV AH,01H
INT 21H
cmp al,40h
JNS M10
SUB AL,30H
JMP M11
M10:SUB AL,37H
M11:ADD DH,AL
MOV AL,0
MOV [di],dh
inc di
LOOP M13
LEA SI,A
LEA DI,B
LEA BX,C
MOV CX,4
M15: MOV AL,[SI]
MOV AH,[DI]
SUB AL,AH
MOV [BX],AL
INC SI
INC DI
INC BX
LOOP M15
M16:
MOV AH,AL
AND AH,80h
JZ M222
MOV CX,4
LEA SI,C
M17: NOT [SI]
INC SI
LOOP M17
N2: LEA DX, msdg3
MOV AH,09H
INT 21H
mov cx, 4
lea si,c
M20:
MOV BX,[SI]
MOV DX,[SI]
SHR DL,4
cmp DL,07h
jns M22
ADD DL,30h
jmp M23
M22:ADD DL,37H
M23:MOV AH,02H
INT 21H
MOV DX,[SI]
SHL DL,4
SHR DL,4
cmp DL,07h
jns M24
ADD DL,30h
jmp M25
M24:ADD DL,37H
M25:MOV AH,02H
INT 21H
INC si
LEA DX, MSDG6
MOV AH,09H
INT 21H
loop M20
M222:
;--- конец программы и выход в DOS -------
MOV AX,4C00H
INT 21H
CSEG ENDS
DSEG SEGMENT PARA 'DATA' USE16
A DB 1,6,3,1
B DB 5,2,7,4
C DB 4 DUP (0)
msdg1 DW "ENTER NUMBER (A):$"
MSDG2 DW " $"
MSDG3 DW 10,13, "RESULT(C):$"
msdg5 DW 10,13,"ENTER NUMBER (B):$"
MSDG4 DW " $"
MSDG6 DW ", $"
DSEG ENDS
PRIMER ENDP
END START