Найти площадь заштрихованной части окружности - Assembler
Формулировка задачи:
Начала изучать недавно и мне это не по силам помогите плиз(если можно текст программы с пояснениями)
В окружность радиусом R вписан квадрат со стороной a см.
Составить программу которая находит площадь заштрихованной части окружности .
При выполнении программа должна иметь цветовой пользовательский интерфейс ввода и вывода информации: ведение диалога с пользователем
Решение задачи: «Найти площадь заштрихованной части окружности»
textual
Листинг программы
;== FASM code ======================= org 100h jmp start mes0 db 13,10,'Vvedite radius kruga....: $' mes1 db 13,10,'Vvedite storonu kvadrata: $' mes2 db 13,10,'Ploshad shtrixa.........: $' err db 7,' <--Oshibka vvoda!$' start: ;----- Запрос на ввод радиуса -------------------------------- mov dx,mes0 ; call message ; call input ; вводим радиус imul ax ; R в квадрате imul ax,314 ; ..умножить на пи mov bx,100 ; xor dx,dx ; div bx ; push ax ; запомним площадь круга ;----- Запрос на ввод стороны квадрата ----------------------- mov dx,mes1 ; call message ; call input ; вводим сторону imul ax ; вычисляем площадь квадрата pop bx ; sub bx,ax ; вычисляем разницу or bx,bx ; ошибка, js error ; ..если отрицательное push bx ; иначе: запомним разницу ;----- Выводим результат на экран ---------------------------- mov dx,mes2 ; call message ; pop ax ; mov bx,10 ; ..в 10-тичном виде call hex2asc ; jmp exit ; на выход! error: mov dx,err ; обработчик ошибки call message ; exit: xor ax,ax ; выход.. int 16h ; int 20h ; ;ннннннннннннннннн П Р О Ц Е Д У Р Ы нннннннннннннннннннннннннннннннннннн ;------------------------------------------------------------------------ message: ; mov ah,9 ; вывод строки на экран int 21h ; ret ; ;------------------------------------------------------------ input: mov ah,8 ; @@1: int 21h ; cmp al,'0' ; jb @@1 ; cmp al,'9' ; ja @@1 ; int 29h ; and ax,0Fh ; ret ; ;------------------------------------------------------------ hex2asc: ; Функция переводит числа в символы pusha ; Вход: АХ = число, BX = система счисления xor cx,cx ; Выход: на экране isDiv: ; xor dx,dx ; div bx ; push dx ; inc cx ; or ax,ax ; jnz isDiv ; isOut: ; pop ax ; cmp al,9 ; jle noHex ; add al,7 ; noHex: ; add al,30h ; int 29h ; loop isOut ; popa ; ret ;