Advertisement
Redxone

[ASM x86] - Graphical Utility (Concept)

Sep 9th, 2016
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .model small
  2. .stack 100h
  3.    COLBOX macro C,POS,EPOS
  4.         MOV AX, 600H
  5.         MOV BH, C
  6.         MOV CX, POS
  7.         MOV DX, EPOS
  8.         INT 10H
  9.    endm
  10.    CURPOS macro X,Y
  11.         MOV AH, 2H
  12.         MOV BH, 0
  13.         MOV DH, Y
  14.         MOV DL, X
  15.         INT 10H
  16.    endm
  17.         .data
  18.  UISTR    DB 'GUI TEST!$'
  19.  GX DB 1
  20.  GY DB 8
  21.         .CODE
  22.  MOV AX, @DATA
  23.  MOV DS, AX
  24.  
  25.  ; DEFINE STORE VARS FOR DRAW PROTOCOL
  26.  MOV DI, OFFSET UISTR
  27.  ; PUT COLOR BOX ARROUND TEXT
  28.  COLBOX 17H, 0505H, 060DH
  29.  CURPOS 5,5
  30.  CALL DRAWGUI
  31.  LEA DI, UISTR
  32.  CURPOS 5,6
  33.  CALL DRAWGUI
  34.  ; EXIT DOS
  35.  MOV AH, 4CH
  36.  INT 21H
  37.  
  38.  
  39. ;-------------------------------------
  40. DRAWGUI PROC
  41.         ; LOOP THROUGH STRING AND DRAW CHAR ARE X AND Y'S
  42.         ; BLACKLISTED REGISTERS - DH, DL
  43.         ; RELY REGISTERS - DI
  44.         ; RETURNS LENGTH WITH BL
  45.         ; SET CHAR COUNT TO 0
  46.         MOV BL, 0
  47.         ; GET STARTING CURSOR POSITION
  48.         MOV AH, 3H
  49.         INT 10H
  50.         ; POSITIONS OUTPUTED TO DL, DH (X,Y)
  51.         ; LOOP DI AND DRAW EACH CHAR AT DL, DH
  52.         NXTCHAR:
  53.                 ; RECIEVE CHAR WITH ADDRESS OUTPUT TO BITS
  54.                 MOV BH, [DI]
  55.                 ; PRINT CHAR THEN MOVE TO NEXT
  56.                 MOV CL, DL
  57.                 MOV AH, 2H
  58.                 ;BACKUP X POSITION
  59.                 MOV DL, BH
  60.                 INT 21H
  61.                 ; POP X POSITION BACK THEN MOVE TO NEXT X
  62.                 MOV DL, CL
  63.                 INC DL
  64.                 MOV CH, BH
  65.                 ; SET CURSOR POS AT NEXT X
  66.                 MOV AH, 2H
  67.                 ; SET DEFAULT PAGE XY
  68.                 MOV BH, 0
  69.                 INT 10H
  70.                 ; CHECK IF LAST CHAR
  71.                 INC DI
  72.                 MOV BH, [DI]
  73.                 CMP BH, '$'
  74.                 JE RETURN
  75.                 ; ABSOLUTE LENGTH, WITHOUT CARRAGE RETURN
  76.                 INC BL
  77.                 JMP NXTCHAR
  78.         RETURN:
  79.                 RET
  80. DRAWGUI ENDP
  81.  
  82. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement