Задание. Написать программу на Ассемблере с использованием арифметических операций и вывода результата на экран.
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
Msg DB ‘Программа сложения трех чисел 10h+20h+30h = $’
.CODE
main: mov ax,@DATA ;
mov ds,ax ; установить адсес сегмента данных
mov ah,9
mov dx,OFFSET Msg
int 21h
mov ax,1020h
add al,ah ; в al=>20+10
add al,30h ; в al=>al+30
;———————– преобразование числа в код ASCII
;———————– вход: ah, выход: bx, портится регистр: al
mov ah,al
shr al,1 ; сдвиг (10111110=>00001011)
shr al,1
shr al,1
shr al,1
cmp al,9 ; проверить al - цифра или буква
ja label1 ; al>9 т.е. буква A,B,C,D,E,F
add al,48 ; al - цифра 0,1,2,3,4,5,6,7,8,9
jmp label2
label1: add al,55 ; al - буква
label2: and ah,00001111b ; снять биты (10111110=>00001110)
cmp ah,9 ; проверить al - цифра или буква
ja label3 ; al>9 т.е. буква A,B,C,D,E,F
add ah,48 ; al - цифра 0,1,2,3,4,5,6,7,8,9
jmp label4
label3: add ah,55 ; al - буква
label4: mov bx,ax ; результат в ячейку памяти
;———————–
mov ah,2 ; вывести символ
mov dl,bl ; вывод значения bl
int 21h
mov dl,bh ; вывод значения bh
int 21h
mov ah,4Ch
int 21h
END main
А не хотите ли знать, что аренда дома в Днепропетровске очень выгодна, когда едете отдыхать с семьей?






