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

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

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

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

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

textual
Листинг программы
model   tiny,pascal
.code
org 100h
start:  mov ah,9
    lea dx,dbInpA
    int 21h
    call    InpNum
    mov dwNumA,di
@@00:   mov ah,9
    lea dx,dbInpB
    int 21h
    call    InpNum
    or  di,di
    jz  @@00
    mov dwNumA,di
    mov ax,13h
    int 10h
    mov ax,0A000h
    mov es,ax
    mov si,50
    mov di,30
    mov cx,30
@@01:   push    cx
    call    OutSqr,si,di,80,12
    call    outStr,si,di,offset dbStr
    mov cx,50h
@@02:   push    cx
    mov cx,5000h
@@03:   loop    @@03
;   mov cx,-1
;@@04:  loop    @@04
;   mov cx,-1
;@@05:  loop    @@05
    pop cx
    loop    @@02
    call    OutSqr,si,di,80,0
    inc si
    inc di
    pop cx
    loop    @@01
    xor ax,ax
    int 16h
    mov ax,3
    int 10h
    ret
dbStr   db  'is text$'
dbInpA  db  10,13,'input A:$'
dbInpB  db  10,13,'input B:$'
OutStr  proc    a:word,b:word,c:word
uses    ax,bx,cx,dx,si,di
    mov ah,2
    mov dx,a
    shr dl,3
    mov bx,b
    shr bl,2
    mov dh,bl
    xor bx,bx
    int 10h
    mov ah,09h
    mov dx,c
    int 21h
OS2:    ret
OutStr  endp
OutSqr  proc    a:word,b:word,c:word,d:word
uses    ax,bx,cx,dx,di,si
    mov si,320
    mov ax,a
    mul si
    add ax,b
    mov di,ax
    mov cx,c
    mov ax,d
OSq1:   push    cx
    push    di
    mov cx,c
    rep stosb
    pop di
    pop cx
    add di,320
    loop    OSq1
    ret
OutSqr  endp
InpNum  proc
    xor di,di
    mov si,10
IN01:   xor ax,ax
    int 16h
    cmp al,13
    jz  IN02
    cmp al,'0'
    jb  IN01
    cmp al,'9'
    ja  IN01
    int 29h
    and ax,0fh
    xchg    di,ax
    xor dx,dx
    mul si
    add di,ax
    jmp IN01
IN02:   ret
InpNum  endp
dwNumA  dw  ?
dwNumB  dw  ?
    end start

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


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

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

8   голосов , оценка 4.25 из 5
Похожие ответы