Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- format MZ
- entry Main: Start
- ; сразу есть прикол: почему-то если объявлять операнды в памяти в каждом сегменте, не працуе
- ; я объявил операнды в памяти в отдельном сегменте и в каждом сегменте устанавливаю ds на этот сегмент с операндами (у меня WorkData)
- segment Main
- Start:
- call far API: GetProccessedNum
- mov bx,dx
- call far API: GetProccessedNum
- mov cx, dx
- call far API: CalculateResult ;result in ax
- mov dx, ax
- call far API: OutputSoughtNumber
- retf
- segment API
- CalculateResult:
- mov ax, bx
- mul ax
- mov bx, ax
- mov ax,cx
- mov si, cx
- mul si
- mul si
- or ax, bx
- retf
- GetProccessedNum: ; Result in DX
- push ax
- mov ax, WorkData
- mov ds, ax
- mov ah, 0ah
- mov dx, input
- int 21h
- mov dh, [input + 1]
- mov [realSize], dh
- call ProccessNum
- call SetNewLine
- pop ax
- retf
- ProccessNum: ; Result in DX
- push cx
- push bx
- xor dx, dx
- mov ax, 1
- mov ch, 10
- movzx si, [realSize]
- LoopDigit:
- xor bx, bx
- mov bl, [input + si + 1]
- sub bl, '0'
- mov cl, al
- mul bl
- add dx, ax
- mov al, cl
- mul ch
- dec si
- test si,si
- jnz LoopDigit
- pop bx
- pop cx
- ret
- SetNewLine:
- push ax
- push dx
- mov ah, 09h
- mov dx, newLine
- int 21h
- pop dx
- pop ax
- ret
- OutputSoughtNumber: ;waits for dx
- mov ax, WorkData
- mov ds, ax
- mov [toOutput],dx
- mov bh, 10
- xor ax, ax
- mov ax, [toOutput]
- test ax, ax
- jz NumIsZero
- mov cx, 0
- DivideNum:
- add cx, 1
- div bh
- xor dx, dx
- mov dl, ah
- push dx
- xor ah, ah
- test ax, ax
- jnz DivideNum
- jmp OutputDigit
- NumIsZero:
- push 0
- mov cx, 1
- OutputDigit:
- pop dx
- add dx, 30h
- mov ah, 02h
- int 21h
- loop OutputDigit
- call WaitForClick
- retf ;OutputSoughtNumber ret
- WaitForClick:
- push ax
- mov ah, 08h
- int 21h
- pop ax
- ret
- Segment WorkData ; а вот и этот сегмент с данными
- input db 4,5 dup(?)
- newLine db 13,10,'$'
- realSize db ?
- toOutput dw ?
- X dw ?
- Y dw ?
- Z dw ?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement