Деление двух чисел и вывод результатов в квадраты - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д