Найти площадь заштрихованной части окружности - 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                       ;

Оцени полезность:

10   голосов , оценка 3.9 из 5