hi, can you guys help me with my assembly language program? I'm using emu8086 microprocessor. I'm almost done with my program, but I'm stuck in dividing some floats. I searched in google and some articles said I need to use Floating Point Unit which I don't really know how. Here's my program http://www.mediafire.com/?ttmq62fhuts887h
u can post ur code here
hold on.
TITLE HARRIS (COM) CONVERTER PROGRAM .MODEL SMALL ; SMALL PROGRAM .CODE ; START OF THE CODE SEGMENT ORG 100H JMP MAIN ;-------------------------------------------------------------- SEP DB "*************************************************$" EQUIV DB "EQUIVALENT : $" ; FOR MENU INP DB "WHAT WOULD YOU LIKE TO CONVERT?$" CHC DB "1. LENGTH 2. TEMPERATURE$" ; FOR MENUINP CHOICE DB ? ; FOR MENUCHECK LENGTH DB 1 TEMP DB 2 ; > MLENGTH LMENU DB "1. mm 2. cm 3. m 4. ft 5. in$" MMMENU DB "1. cm 2. m 3. ft 4. in$" CMMENU DB "1. mm 2. m 3. ft 4. in$" MMENU DB "1. mm 2. cm 3. ft 4. in$" FTMENU DB "1. mm 2. cm 3. m 4. in$" INMENU DB "1. mm 2. cm 3. m 4. ft$" ; > MTEMP TMENU DB "1. C 2. F$" ; > MMTOCM PLS DB "INPUT THE VALUE : $" VALUE DB 7, ?, 0 DUP() ONE DB 1 TWO DB 2 THREE DB 3 FOUR DB 4 FIVE DB 5 TO DB "TO : $" ; FOR HAR MSG DB "UNITS THAT CAN BE CONVERTED :$" FROM DB "FROM : $" FROMINP DB ? ; FOR RIS MSG2 DB "POSSIBLE CONVERTIONS :$" ;-------------------------------------------------------------- MAIN PROC NEAR MOV CX, 5 MAINL: CALL CLRREGS CALL MENU CALL MENUINP CALL MENUCHECK MAINLDONE: INT 20H ; EXIT TO OPERATING SYSTEM MAIN ENDP ;-------------------------------------------------------------- CLRREGS PROC NEAR MOV AX, 0 MOV BX, 0 MOV CX, 0 MOV DX, 0 RET CLRREGS ENDP ;-------------------------------------------------------------- MENU PROC NEAR PUSHA ; DISPLAY INP MOV AH, 9 LEA DX, INP INT 21H ; SET CURSOR POSITION TO ROW 2, COLUMN 0, PAGE 0 MOV DH, 2 ; ROW MOV DL, 0 ; COLUMN MOV BH, 0 ; PAGE MOV AH, 2 INT 10H ; DISPLAY CHC MOV AH, 9 LEA DX, CHC INT 21H ; SET CURSOR POSITION TO ROW 4, COLUMN 0, PAGE 0 MOV DH, 4 ; ROW MOV DL, 0 ; COLUMN MOV BH, 0 ; PAGE MOV AH, 2 INT 10H POPA RET MENU ENDP ;-------------------------------------------------------------- MENUINP PROC NEAR PUSHA MOV AH, 1 INT 21H ; INPUT STORED IN AL AND AL, 00001111B MOV CHOICE, AL ; INPUT FROM AL COPIED TO CHOICE MOV AL, 0 ; AL SET TO 0 ; SET CURSOR POSITION TO ROW 5, COLUMN 0, PAGE 0 MOV DH, 5 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H MOV AH, 9 LEA DX, SEP INT 21H ; SET CURSOR POSITION TO ROW 6, COLUMN 0, PAGE 0 MOV DH, 6 ; ROW MOV DL, 0 ; COLUMN MOV BH, 0 ; PAGE MOV AH, 2 INT 10H POPA RET MENUINP ENDP ;-------------------------------------------------------------- MENUCHECK PROC NEAR PUSHA MOV AL, CHOICE ; COPY CHOICE TO AL CMP AL, LENGTH ; COMPARE AL TO LENGTH JE MLENGTH ; IF AL IS EQUAL TO LENGTH, SHORT JUMP TO MLENGTH JB MBELOW ; IF AL IS BELOW TO LENGTH, SHORT JUMP TO MBELOW CMP AL, TEMP ; COMPARE AL TO WEIGHT JE MTEMP ; IF AL IS EQUAL TO WEIGHT, SHORT JUMP TO MWEIGHT JA MABOVE ; IF AL IS ABOVE TO TEMP, SHORT JUMP TO MABOVE MLENGTH: CALL HAR MOV AH, 9 MOV DX, OFFSET LMENU INT 21H ; SET CURSOR POSITION TO ROW 10, COLUMN 0, PAGE 0 MOV DH, 10 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H MOV AH, 9 MOV DX, OFFSET FROM INT 21H MOV AH, 1 INT 21H ; INPUT STORED IN AL AND AL, 00001111B CMP AL, ONE JE MM CMP AL, TWO JE CM CMP AL, THREE JE M CMP AL, FOUR JE FT CMP AL, FIVE JE INCHES MM: CALL RIS MOV AH, 9 LEA DX, MMMENU INT 21H CALL BAL MOV AL, 0 ; CLEAR AL MOV AH, 1 INT 21H AND AL, 00001111B ; SET CURSOR POSITION TO ROW 17, COLUMN 0, PAGE 0 MOV DH, 17 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H MOV AH, 9 LEA DX, SEP INT 21H CMP AL, ONE JE MMTOCM CMP AL, TWO JE MMTOM CMP AL, THREE JE MMTOFT CMP AL, FOUR JE MMTOIN MMTOCM: ; IF CHOICE IS 1 CALL DON RET MMTOM: ; IF CHOICE IS 2 CALL DON RET MMTOFT: ; IF CHOICE IS 3 CALL DON RET MMTOIN: ; IF CHOICE IS 4 CALL DON RET CM: CALL RIS MOV AH, 9 LEA DX, CMMENU INT 21H CALL BAL MOV AL, 0 ; CLEAR AL MOV AH, 1 INT 21H AND AL, 00001111B ; SET CURSOR POSITION TO ROW 17, COLUMN 0, PAGE 0 MOV DH, 17 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H MOV AH, 9 LEA DX, SEP INT 21H CMP AL, ONE JE CMTOMM CMP AL, TWO JE CMTOM CMP AL, THREE JE CMTOFT CMP AL, FOUR JE CMTOIN CMTOMM: ; IF CHOICE IS 1 CALL DON RET CMTOM: ; IF CHOICE IS 2 CALL DON RET CMTOFT: ; IF CHOICE IS 3 CALL DON RET CMTOIN: ; IF CHOICE IS 4 CALL DON RET M: CALL RIS MOV AH, 9 LEA DX, MMENU INT 21H CALL BAL MOV AL, 0 ; CLEAR AL MOV AH, 1 INT 21H AND AL, 00001111B ; SET CURSOR POSITION TO ROW 17, COLUMN 0, PAGE 0 MOV DH, 17 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H MOV AH, 9 LEA DX, SEP INT 21H CMP AL, ONE JE MTOMM CMP AL, TWO JE MTOCM CMP AL, THREE JE MTOFT CMP AL, FOUR JE MTOIN MTOMM: ; IF CHOICE IS 1 CALL DON RET MTOCM: ; IF CHOICE IS 2 CALL DON RET MTOFT: ; IF CHOICE IS 3 CALL DON RET MTOIN: ; IF CHOICE IS 4 CALL DON RET FT: CALL RIS MOV AH, 9 LEA DX, FTMENU INT 21H CALL BAL MOV AL, 0 ; CLEAR AL MOV AH, 1 INT 21H AND AL, 00001111B ; SET CURSOR POSITION TO ROW 17, COLUMN 0, PAGE 0 MOV DH, 17 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H MOV AH, 9 LEA DX, SEP INT 21H CMP AL, ONE JE FTTOMM CMP AL, TWO JE FTTOCM CMP AL, THREE JE FTTOM CMP AL, FOUR JE FTTOIN FTTOMM: ; IF CHOICE IS 1 CALL DON RET FTTOCM: ; IF CHOICE IS 2 CALL DON RET FTTOM: ; IF CHOICE IS 3 CALL DON RET FTTOIN: ; IF CHOICE IS 4 CALL DON RET INCHES: CALL RIS MOV AH, 9 LEA DX, INMENU INT 21H CALL BAL MOV AL, 0 ; CLEAR AL MOV AH, 1 INT 21H AND AL, 00001111B ; SET CURSOR POSITION TO ROW 17, COLUMN 0, PAGE 0 MOV DH, 17 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H MOV AH, 9 LEA DX, SEP INT 21H CMP AL, ONE JE INTOMM CMP AL, TWO JE INTOCM CMP AL, THREE JE INTOM CMP AL, FOUR JE INTOFT INTOMM: ; IF CHOICE IS 1 CALL DON RET INTOCM: ; IF CHOICE IS 2 CALL DON RET INTOM: ; IF CHOICE IS 3 CALL DON RET INTOFT: ; IF CHOICE IS 4 CALL DON RET MTEMP: MBELOW: MABOVE: POPA RET MENUCHECK ENDP ;-------------------------------------------------------------- HAR PROC NEAR PUSHA MOV AH, 9 MOV DX, OFFSET MSG INT 21H ; SET CURSOR POSITION TO ROW 8, COLUMN 0, PAGE 0 MOV DH, 8 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H POPA RET HAR ENDP ;-------------------------------------------------------------- RIS PROC NEAR PUSHA ; SET CURSOR POSITION TO ROW 12, COLUMN 0, PAGE 0 MOV DH, 12 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H MOV AH, 9 LEA DX, MSG2 INT 21H ; SET CURSOR POSITION TO ROW 14, COLUMN 0, PAGE 0 MOV DH, 14 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H POPA RET RIS ENDP ;-------------------------------------------------------------- BAL PROC NEAR ; SET CURSOR POSITION TO ROW 16, COLUMN 0, PAGE 0 MOV DH, 16 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H MOV AH, 9 LEA DX, TO INT 21H RET BAL ENDP ;-------------------------------------------------------------- DON PROC NEAR ; SET CURSOR POSITION TO ROW 18, COLUMN 0, PAGE 0 MOV DH, 18 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H MOV AH, 9 LEA DX, PLS INT 21H MOV AH, 0AH MOV DX, OFFSET VALUE INT 21H ; SET CURSOR POSITION TO ROW 19, COLUMN 0, PAGE 0 MOV DH, 19 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H MOV AH, 9 LEA DX, SEP INT 21H ; SET CURSOR POSITION TO ROW 20, COLUMN 0, PAGE 0 MOV DH, 20 MOV DL, 0 MOV BH, 0 MOV AH, 2 INT 10H MOV AH, 9 LEA DX, EQUIV INT 21H MOV AX, 0 ; CLEAR AX MOV AL, EQUIV MOV BL, 1D DIV BL RET DON ENDP ;--------------------------------------------------------------
I'm still new in assembly programming, so correct me if I have some mistakes :)
Join our real-time social learning platform and learn together with your friends!