Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; ------------------------
- ; DiskPatch Alpha 0.1
- ; @author #Utroz(RSC)#
- ; Visit: www.Gcoders.info
- ; ------------------------
- ; File: MAIN.ASM
- CGROUP GROUP CODE__SEG ;Group of two segments.
- ASSUME CS: CGROUP
- CODE__SEG SEGMENT PUBLIC
- ORG 100h
- EXTRN @DEC__PRINT:NEAR
- PUBLIC @MAIN
- @MAIN PROC NEAR
- MOV DX,12345 ;Hex:3039h
- CALL @DEC__PRINT
- INT 20h ;Return to DOS(Exit System).
- @MAIN ENDP
- CODE__SEG ENDS
- END @MAIN
- ; ------------------------
- ; DiskPatch Alpha 0.1
- ; @author #Utroz(RSC)#
- ; Visit: www.Gcoders.info
- ; ------------------------
- ; File: DISP__SET.ASM
- CGROUP GROUP CODE__SEG, DATA__SEG ;Group of two segments.
- ASSUME CS: CGROUP, DS:CGROUP
- CODE__SEG SEGMENT PUBLIC
- ORG 100h
- EXTERN @HEX__PRINT: NEAR
- EXTERN @PRINT: NEAR
- EXTERN @BEEP__SOUND: NEAR
- @DISP__LINE PROC NEAR
- XOR BX,BX ;BX is zero.
- MOV CX,16 ;Copy 16 bytes
- LOOP_HEX:
- MOV DL,SETOR[BX] ;Catch 1 byte.
- CALL @HEX__PRINT ;Copy a byte in hex.
- MOV DL,' ' ;Space in prints.
- CALL @PRINT
- INC BX
- LOOP LOOP_HEX
- CALL @BEEP_SOUND
- INT 20h
- @DISP__LINE ENDP
- CODE__SEG ENDS
- DATA__SEG SEGMENT PUBLIC
- PUBLIC SETOR
- SETOR DB 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h ;Define bytes on memory.
- DB 18h, 19h, 1Ah, 1Bh, 1Ch, 1Dh, 1Eh, 1Fh
- DATA__SEG ENDS
- END @DISP__LINE
- ; ------------------------
- ; DiskPatch Alpha 0.1
- ; @author #Utroz(RSC)#
- ; Visit: www.Gcoders.info
- ; ------------------------
- ; File: IOVIDEO.ASM
- CGROUP GROUP CODE__SEG ;Group of two segments.
- ASSUME CS: CGROUP
- CODE__SEG SEGMENT PUBLIC
- @SIGNAL PROC NEAR
- PUSH DX
- CMP DX,8000h ;IF(DX <= 7FFFh)
- JA NEGATIVE ;GOTO NEGATIVE
- MOV DL,2Bh ;POSITIVE
- JMP Short PRINT
- NEGATIVE:
- MOV DL,2Dh
- PRINT:
- CALL @PRINT
- POP DX
- RET
- @SIGNAL ENDP
- ;------ DECIMAL ----
- PUBLIC @DEC__PRINT
- @DEC__PRINT PROC NEAR ;(IMP__DECIMAL)
- PUSH AX ;Save used registers.
- PUSH CX
- PUSH DX
- PUSH SI
- CALL @SIGNAL ;Call signal function.
- MOV AX,DX ;Move hex to AX.
- MOV SI,10 ;Divisor by 10 using SI.
- XOR CX,CX ;Stack digits count.
- NOT__ZERO:
- XOR DX,DX ;N word start on zero.
- DIV SI ;Div value on AX for SI: n/10 / DX = mod.
- PUSH DX ;Put DX in stack.
- INC CX ;Increments a CX.
- OR AX,AX ;IF(AX != 0)
- JNZ NOT__ZERO ;GOTO NOT__ZERO
- PRINT__LOOP:
- POP DX ;Take digits in reverse.
- CALL @HEX__CONVERT ;Send to print.
- LOOP PRINT__LOOP
- END__DEC:
- POP SI
- POP DX
- POP CX
- POP AX
- RET
- @DEC__PRINT ENDP
- ;------ HEXDECIMAL --
- PUBLIC @HEX__PRINT
- @HEX__PRINT PROC NEAR ;(IMP__HEXA)
- PUSH CX ;Save registers
- PUSH DX
- MOV DH, DL ;Copy low byte to high byte.
- MOV CL,04h
- SHR DL,CL
- CALL @HEX__CONVERT ;First digit.
- MOV DL, DH
- AND DL, 0Fh
- CALL @HEX__CONVERT ;Second digit.
- POP DX
- POP CX
- RET
- @HEX__PRINT ENDP
- PUBLIC @HEX__CONVERT
- @HEX__CONVERT PROC NEAR ;(IMP__DIG__HEXA)
- PUSH DX
- CMP DL,10 ; !(DL > 10d)
- JAE HEX ;IF no
- ADD DL,"0" ;ADD DL,30 - IF yes(DEC)
- JMP Short PRINT_CHAR
- HEX: ;(LETRA__HEXA)
- ADD DL,"A"-10 ;ADD DL,37
- PRINT_CHAR: ;(IMP__DIGITO)
- CALL @PRINT
- POP DX
- RET
- @HEX__CONVERT ENDP
- PUBLIC @PRINT
- @PRINT PROC NEAR ;(IMP__CAR)
- PUSH AX
- MOV AH, 02h ;Function 02 a INT 21h.
- INT 21h
- POP AX
- RET
- @PRINT ENDP
- PUBLIC @BEEP_SOUND
- @BEEP_SOUND PROC NEAR
- PUSH DX
- PUSH AX
- MOV AH, 02h
- MOV DL,7 ;Play a Beep Sound on print char.
- INT 21h
- POP AX
- POP DX
- RET
- @BEEP_SOUND ENDP
- CODE__SEG ENDS
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement