Деление двух чисел и вывод результатов в квадраты - Assembler

Узнай цену своей работы

Формулировка задачи:

Необходимо написать программу для деления двух чисел и вывод результатов в квадраты на экране. В первый квадрат поместить частное, во второй - остаток от деления. Далее при нажатии на 1 квадрат с частным должен двигаться вверх до своей исходной позиции, а квадрат с остатком вправо до исходной позиции. По нажатию 2 все должно происходить наоборот. Компилятор TASM. Заранее спасибо.

Решение задачи: «Деление двух чисел и вывод результатов в квадраты»

textual
Листинг программы
  1. model   tiny,pascal
  2. .code
  3. org 100h
  4. start:  mov ah,9
  5.     lea dx,dbInpA
  6.     int 21h
  7.     call    InpNum
  8.     mov dwNumA,di
  9. @@00:   mov ah,9
  10.     lea dx,dbInpB
  11.     int 21h
  12.     call    InpNum
  13.     or  di,di
  14.     jz  @@00
  15.     mov dwNumA,di
  16.     mov ax,13h
  17.     int 10h
  18.     mov ax,0A000h
  19.     mov es,ax
  20.     mov si,50
  21.     mov di,30
  22.     mov cx,30
  23. @@01:   push    cx
  24.     call    OutSqr,si,di,80,12
  25.     call    outStr,si,di,offset dbStr
  26.     mov cx,50h
  27. @@02:   push    cx
  28.     mov cx,5000h
  29. @@03:   loop    @@03
  30. ;   mov cx,-1
  31. ;@@04:  loop    @@04
  32. ;   mov cx,-1
  33. ;@@05:  loop    @@05
  34.     pop cx
  35.     loop    @@02
  36.     call    OutSqr,si,di,80,0
  37.     inc si
  38.     inc di
  39.     pop cx
  40.     loop    @@01
  41.     xor ax,ax
  42.     int 16h
  43.     mov ax,3
  44.     int 10h
  45.     ret
  46. dbStr   db  'is text$'
  47. dbInpA  db  10,13,'input A:$'
  48. dbInpB  db  10,13,'input B:$'
  49. OutStr  proc    a:word,b:word,c:word
  50. uses    ax,bx,cx,dx,si,di
  51.     mov ah,2
  52.     mov dx,a
  53.     shr dl,3
  54.     mov bx,b
  55.     shr bl,2
  56.     mov dh,bl
  57.     xor bx,bx
  58.     int 10h
  59.     mov ah,09h
  60.     mov dx,c
  61.     int 21h
  62. OS2:    ret
  63. OutStr  endp
  64. OutSqr  proc    a:word,b:word,c:word,d:word
  65. uses    ax,bx,cx,dx,di,si
  66.     mov si,320
  67.     mov ax,a
  68.     mul si
  69.     add ax,b
  70.     mov di,ax
  71.     mov cx,c
  72.     mov ax,d
  73. OSq1:   push    cx
  74.     push    di
  75.     mov cx,c
  76.     rep stosb
  77.     pop di
  78.     pop cx
  79.     add di,320
  80.     loop    OSq1
  81.     ret
  82. OutSqr  endp
  83. InpNum  proc
  84.     xor di,di
  85.     mov si,10
  86. IN01:   xor ax,ax
  87.     int 16h
  88.     cmp al,13
  89.     jz  IN02
  90.     cmp al,'0'
  91.     jb  IN01
  92.     cmp al,'9'
  93.     ja  IN01
  94.     int 29h
  95.     and ax,0fh
  96.     xchg    di,ax
  97.     xor dx,dx
  98.     mul si
  99.     add di,ax
  100.     jmp IN01
  101. IN02:   ret
  102. InpNum  endp
  103. dwNumA  dw  ?
  104. dwNumB  dw  ?
  105.     end start

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы