Jump to content

assembly calculator error

- - - - -

  • Please log in to reply
1 reply to this topic

#1
arash_total

arash_total

    Newbie

  • Members
  • Pip
  • 2 posts
hi ,
Code calculator in error, please help resolve this error. I compile code calculator emu8086 I'll error on line 71.
The second question: this calculator in 10 base worked.
How can the numbers in binary form as the input received and as output .
to download emu8086 EMU8086
tnx

    .model huge

    .stack 100h

    .data

     

    numstring db 10 dup(?), "$"

     

    keypressed db ? ; VARIABLE TO STORE ASCII OF PRESSED KEY FROM AL

     

    line0 db "               CALCULATOR (press ESC to exit program)"

    line1 db 10,13, "      _____________________"

    line2 db 10,13, "     |  _________________  |"

    line3 db 10,13, "     | |              0. | |"

    line4 db 10,13, "     | |_________________| |"

    line5 db 10,13, "     |  ___ ___ ___   ___  |"

    line6 db 10,13, "     | | 7 | 8 | 9 | | + | |"

    line7 db 10,13, "     | |___|___|___| |___| |"

    line8 db 10,13, "     | | 4 | 5 | 6 | | - | |"

    line9 db 10,13, "     | |___|___|___| |___| |"    

    lineA db 10,13, "     | | 1 | 2 | 3 | | x | |"

    lineB db 10,13, "     | |___|___|___| |___| |"

    lineC db 10,13, "     | | . | 0 | = | | / | |"

    lineD db 10,13, "     | |___|___|___| |___| |"

    lineE db 10,13, "     |_____________________|", "$"

     

     

    print0 db "0" , "$"

    print1 db "1" , "$"

    print2 db "2" , "$"

    print3 db "3" , "$"

    print4 db "4" , "$"

    print5 db "5" , "$"

    print6 db "6" , "$"

    print7 db "7" , "$"

    print8 db "8" , "$"

    print9 db "9" , "$"

     

     

    .code

        call initds

    call clrscrandprintcalc

    call getkeyandpaintcalc

    call terminateprog

     

     

    mov ax ,3;

    int 10h

     

    mov ah,9

    lea dx ,print1

    int 21h

     

    ;======== If its neccessary please don't touch the code beginning here======

    ;========INITIALIZE=DATA=SEGMENT============

    proc initds near

    mov ax, @data ; init DS

    mov es, ax

    mov ds, ax

    ret

    initds endp

    ;======CLEAR=THE=SCREEN=AND=PRINT=THE=CALCULATOR=========

    proc clrscrandprintcalc near

    mov ax, 3; CLEARSCREEN

    int 10h

    mov ah, 9

    lea dx, line1 ; PRINT CALCULATOR

    int 21h

    ret

    clrscrandprintcalc endp

    ;======GET=INPUT=FROM=USER=AND=PAINT=CORRESPONDING=KEY=IN=THE=CALCULATOR=======

    proc getkeyandpaintcalc near

    jumps ; FOR LONG JUMPS

    lea si, numstring; LOAD SI WITH BASE ADDRESS OF NUMSTRING

    mov di, 0 ; COUNTER FOR PRINTING

    mov ah, 2

    mov bh, 0

    mov dx,0316h ; POSITION CURSOR IN THE LCD DISPLAY OF OUR CALCULATOR

    int 10h ; INTERRUPT TO POSITION CURSOR

    ulit:

    mov ah, 7 ;GET KEY

    int 21h

    mov keypressed, al ; MOVE AL TO KEYPRESSED

    cmp ch, 0; DOES CH HAVE A PREVIOUS VALUE? TO CHECK IF CLEARPREVIOUS PROCEDURE IS TO BE CALLED

    je skip

    call clearprevious

    skip:

    cmp keypressed, '0' ; TEST THE INPUTS

    je do0

    cmp keypressed, '1'

    je do1

    cmp keypressed, '2'

    je do2

    cmp keypressed, '3'

    je do3

    cmp keypressed, '4'

    je do4

    cmp keypressed, '5'

    je do5

    cmp keypressed, '6'

    je do6

    cmp keypressed, '7'

    je do7

    cmp keypressed, '8'

    je do8

    cmp keypressed, '9'

    je do9

    cmp keypressed, '.'

    je doperiod

    cmp keypressed, '='

    je doequals

    cmp keypressed, '+'

    je doplus

    cmp keypressed, '-'

    je dominus

    cmp keypressed, '*'

    je dotimes

    cmp keypressed, '/'

    je dodivide

    cmp keypressed, 1Bh

    je exit

    mov ch, 0

    jmp ulit

     

    do0:            ;POSITION THE X AND Y OF THE BLOCKS FOR EACH KEY

    mov cx,0D0Ch

    mov dx,0D0Eh

    jmp do

    do2:

    mov cx,0B0Ch

    mov dx,0B0Eh

    jmp do

    do5:

    mov cx,090Ch

    mov dx,090Eh

    jmp do

    do8:

    mov cx,070Ch

    mov dx,070Eh

    jmp do

    do7:

    mov cx,0708h

    mov dx,070Ah

    jmp do

    do4:

    mov cx,0908h

    mov dx,090Ah

    jmp do

    do1:

    mov cx,0B08h

    mov dx,0B0Ah

    jmp do

    doperiod:

    mov cx,0D08h

    mov dx,0D0Ah

    jmp do

    do9:

    mov cx,0710h

    mov dx,0712h

    jmp do

    do6:

    mov cx,0910h

    mov dx,0912h

    jmp do

    do3:

    mov cx,0B10h

    mov dx,0B12h

    jmp do

    doequals:

    mov cx,0D10h

    mov dx,0D12h

    jmp do

    doplus:

    mov cx,0716h

    mov dx,0718h

    jmp do

    dominus:

    mov cx,0916h

    mov dx,0918h

    jmp do

    dotimes:

    mov cx,0B16h

    mov dx,0B18h

    jmp do

    dodivide:

    mov cx,0D16h

    mov dx,0D18h

    do:

    mov ax, 0600h ; CALL FUNCTION 

    mov bh, 70h ;   TO PAINT (WITH WHITE)

    int 10h  ;      THE KEY

     

    mov al, keypressed

    mov numstring[si], al

    inc si

    inc di

    ;call printnums

    jmp ulit

    exit:

    ret

    getkeyandpaintcalc endp

     

     

    ;===============================

    proc printnums near

    push cx

    push bx

    mov cx, di

    here:

    mov bx, 0

    mov ah,2

    mov dl, numstring[bx]

    int 21h

    loopne here

    pop bx

    pop cx

    ret

    printnums endp

     

    ;===CLEARS=THE=PREVIOUS=PAINTED=KEY=AND=REDRAWS=THE=LINE=IN=THE=BOTTOM=OF=THE=KEY=====

    proc clearprevious near

    mov ax, 0600h

    mov bh, 07h ; PAINT WITH BLACK

    int 10h ; FUNCTION TO PAINT. NOTE THAT WE DID NOT CHANGE THE VALUES OF CX AND DX

    mov ah,2 ; POSITION CURSOR, READY TO REDRAW THE LINE

    mov bh, 0

    mov dx, cx

    int 10h ; INTERRUPT TO POSTION CURSOR

    mov dl,'_'

    int 21h ; THREE INT 21H BECAUSE

    int 21h ; THE LOWER LINE CONSISTS

    int 21h ; OF THREE (3) UNDERSCORES

    mov dx,0316h ; POSITION CURSOR IN THE LCD DISPLAY OF OUR CALCULATOR

    sub dx, di

    int 10h ; INTERRUPT TO POSITION CURSOR

    ret

    clearprevious endp

    ;====TERMINTATE=THE=PROGRAM======

    proc terminateprog near

    mov ah, 4ch;

    int 21h

    ret

    endp terminateprog

    ;===============================

    end




#2
dargueta

dargueta

    Writes binary right handed and hex left handed

  • Moderators
  • 4,705 posts
  • Programming Language:C, Java, C++, PHP, Python, Perl, Assembly, Bash, Others
  • Learning:JavaScript
"jumps" isn't an instruction. What're you trying to do?
sudo rm -rf /




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users