Skip to content

Instantly share code, notes, and snippets.

@PashokSy
Created January 11, 2020 18:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PashokSy/e0246bee58d9a492b3b2d7331b723f49 to your computer and use it in GitHub Desktop.
Save PashokSy/e0246bee58d9a492b3b2d7331b723f49 to your computer and use it in GitHub Desktop.
;(40x2-23) / x якщо 0 < x ≤ 7
;38x3+5 якщо x ≤ 0 (DICH)
;126 / x якщо x > 7 (READY)
STACKSEG SEGMENT PARA "STACK"
DW 32 DUP(?)
STACKSEG ENDS
DSEG SEGMENT PARA PUBLIC "DATA"
DUMP DB 5, ?, 4 DUP('?')
X DB 0
FL DB 0
DSEG ENDS
CSEG SEGMENT PARA PUBLIC "CODE"
MAIN PROC FAR
ASSUME CS: CSEG, DS: DSEG, SS: STACKSEG
; MAGIC !!!
PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DSEG
MOV DS, AX
; MAGIC END !!!
; INPUT PROC
LEA DX,DUMP
MOV AH,10
INT 21H
LEA SI,DUMP+1
XOR CX,CX
MOV CL,[SI]
CMP CX,0
;JE EXIT_POINT
JE MIDDLE_JUMP_POINT
MOV FL,0
INC SI
MOV AL,[SI]
CMP AL,'-'
JNE POSITIV
MOV FL,1
DEC CL
CMP CX,0
JE EXIT_POINT
INC SI
POSITIV:
XOR AX,AX
XOR DI,DI
MOV DI,10
DEC SI
MIDDLE_JUMP_POINT:
JE EXIT_POINT
FOR_LOOP:
INC SI
XOR BX,BX
MOV BL,[SI]
SUB BL,'0'
CMP BL,9
JA EXIT_POINT
MUL DI
ADD AX,BX
LOOP FOR_LOOP
CMP FL,1
JNE NOT_NEG
NEG AX
NOT_NEG:
; INPUT END
CMP AX,0
JE CONDITION_2
CMP FL,1
JE CONDITION_2
CMP AX, 7
JA CONDITION_3 ;УСЛОВИЕ X > 7
CONDITION_2:
IMUL AX
IMUL AX
MOV BX,38
IMUL BX
ADD AX,5
JMP TO_OUTPUT
CONDITION_3: ;126 / x
MOV BX,AX
MOV AX, 126
;MOV DX, 126; В ТЕОРИИ ЕСЛИ БОЛЬШЕ 1 БИТА РАБОТАЕМ С DX
DIV BX
TO_OUTPUT:
; OUTPUT PROC
MOV BX,AX
OR BX,BX
MOV AL,0AH
INT 29H
JNS M1
MOV AL, "-"
INT 29H
NEG BX
M1:
MOV AX, BX
XOR CX, CX
MOV BX, 10
M2:
XOR DX, DX
DIV BX
ADD DL, "0"
PUSH DX
INC CX
TEST AX, AX
JNZ M2
M3:
POP AX
INT 29H
LOOP M3
; OUTPUT END
EXIT_POINT:
ret
MAIN ENDP
CSEG ENDS
END MAIN
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment