;=================================================================================================== ; Program to Print Number System Translation Table ; File: program3_numbers.asm ; Author: Andre Long ; Class: CISP 310 Assembly ; Due: Wednessday, September 14, 2005 ; Description: This program will convert decimal numbers to other number systems ;=================================================================================================== INCLUDE Pcmac.inc EXTRN CLEAR: FAR ;CLEAR SCREEN EXTRN NEWLINE: FAR ;DISPLAY NEWLINE CHARACTER EXTRN PAUSE: FAR ;PAUSE UNTIL KEY STROKE EXTRN PUTBIN: FAR ;DISPLAY BINARY (BYTE OR WORD) EXTRN PUTDEC: FAR ;DISPLAY 16-BIT DECIMAL INT. EXTRN PUTHEX: FAR ;DISPLAY HEX (BYTE OR WORD) EXTRN PUTOCT: FAR ;DISPLAY OCTAL (BYTE OR WORD) EXTRN PUTSTRNG: FAR ;DISPLAY CHARACTER STRING ;================================================================================================== ; STACK SEGMENT DEFINITION ; STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS ;================================================================================================== ; DATA SEGMENT DEFINITION ; DATA SEGMENT HEADERS DB 'DECIMAL ' DB ' BINARY ' DB ' OCTAL ' DB 'HEXADECIMAL AL' SPACES DB ' ' PAUSE_MSG DB 'Press Any Key Continue Program ' End_MSG DB 'Created By Andre Long ', 13, 10, '$' DATA ENDS ;================================================================================================== ; CODE SEGMENT DEFINITION ; CODE SEGMENT 'CODE' ASSUME CS: CODE, DS: NOTHING, ES: DATA, SS: STACK NUMBER: MOV AX, SEG DATA ;SET ES-REGISTER TO POINT TO MOV ES, AX ;DATA SEGMENT MOV AX, -20 ;NUMBER = -20 NUM_LOOP: ;REPEAT LEA DI, HEADERS ;DISPLAY HEADERS MOV CX, 66 CALL PUTSTRNG MOV CX, 10 ;LOOP_COUNT = 10 PAGE_LOOP: ;REPEAT CALL NEWLINE ;DISPLAY NEWLINE CHAR. PUSH CX ;PUSH LOOP_COUNT MOV BH,+1 ;DISPLAY NUMBER IN CALL PUTDEC ;DECIMAL RIGHT JUSTIFIED LEA DI, SPACES ;DISPLAY 3 SPACE MOV CX, 3 CALL PUTSTRNG MOV BL, 0 ;DISPLAY LOWER 8 BITS CALL PUTBIN ;OF NUMBER IN BINARY MOV CX, 1 ;DISPLAY 1 SPACE CALL PUTSTRNG MOV BL, 1 ;DISPLAY NUMBER IN CALL PUTBIN ;BINARY MOV CX, 3 ;DISPLAY 3 SPACES CALL PUTSTRNG MOV BL, 0 ;DISPLAY LOWER 8 BITS CALL PUTOCT ;OF NUMBER IN OCTAL MOV CX, 1 ;DISPLAY 1 SPACE CALL PUTSTRNG MOV BL, 1 ;DISPLAY NUMBER IN CALL PUTOCT ;OCTAL MOV CX, 5 ;DISPLAY 5 SPACES CALL PUTSTRNG MOV BL, 0 ;DISPLAY LOWER 8 BITS CALL PUTHEX ;OF NUMBER IN HEX MOV CX, 1 ;DISPLAY 1 SPACE CALL PUTSTRNG MOV BL, 1 ;DISPLAY NUMBER IN HEX CALL PUTHEX POP CX ;POP LOOP_COUNT INC AX ;NUMBER = NUMBER + 1 LOOP PAGE_LOOP ;DECREMENT LOOP_COUNT ;UNTIL LOOP_COUNT = 0 PUSH AX ;PUSH NUMBER CALL NEWLINE LEA DI, PAUSE_MSG ;PAUSE AND WAIT FOR MOV CX, 22 ;KEY STROKE CALL PAUSE POP AX ;POP NUMBER CMP AX, 10 JGE RETURN ;UNTIL NUMBER = 10 JMP NUM_LOOP RETURN: LEA DI, End_MSG MOV CX, 25 CALL Putstrng MOV AX, 4C00H ;RETURN TO OS INT 21H CODE ENDS END NUMBER