Ok thank you. Actually though i found a windows assembly I like a lot. Its called emu8086 www.emu8086.com so I been using that and the only thing I am having trouble with now is my comparing/testing instructions to jump around.
name "menu"
data segment
pkey db "press any key...$"
s db 'RACECAR'
s_size = $ - m1
db 0Dh,0Ah,'$'
msg1 db " This is a palindrome.$"
msg2 db " This is not a palindrome.$"
num db "Enter any number from -32768 to 65535.$, or zero to stop"
bin db "Binary form is $"
buffer db 7,?, 5 dub <0>, 0, 0
binary dw ?
ends
stack segment
dw 128 dup(0)
ends
code segment
menu:
mov ax, data
mov ds, ax
mov es, ax
clear_screen
print 7,7,0000_1010b,"Press 1 for Hello World."
print 7,8,0000_1010b,"Press 2 for palindrome."
print 7,9,0000_1010b,"Press 3 to see the position of your mouse."
print 7,10,0000_1010b,"Press 4 to exit."
print 7,11,000_1010b,"Enter the number: "
mov ax,1
int 33h
mov ah,0ah
int 21h
cmp ah,1
je World
cmp ah,2
je palindrome
cmp ah,3
je mouse
cmp ah,4
je stop
World:
mov ax,3
int 10h
mov ax,1003h
mov bx,0
int 10h
mov ax,0b800h
mov ds,ax
mov [02h], 'H'
mov [04h], 'e'
mov [06h], 'l'
mov [08h], 'l'
mov [0ah], 'o'
mov [0ch], ','
mov [0eh], 'W'
mov [10h], 'o'
mov [12h], 'r'
mov [14h], 'l'
mov [16h], 'd'
mov [18h], '!'
mov cx,12
mov di, 03h
c:
mov [di], 00001010b
add di, 2
loop c
mov ah,0
int 16h
jmp menu
Palindrome:
mov ah, 9
mov dx, offset s
int 21h
lea di,s
mov si,di
add si, s_size
dec si
mov cx, s_size
cmp cx, 1
je is_palindrome
shr cx, 1
next_char:
mov al, [di]
mov bl, [si]
mov al, bl
jne not_palindrome
inc di
dec si
loop next_char
is_palindrome:
mov ah, 9
mov dx, offset msg1
int 21h
jmp stop
not_palindrome:
mov ah, 9
mov dx, offset msg1
int 21h
jmp menu
mouse:
print macro x, y, attrib, sdat
LOCAL s_dcl, skip_dcl, s_dcl_end
pusha
mov dx, cs
mov es, dx
mov ah, 13h
mov al, 1
mov bh, 0
mov bl, attrib
mov cx, offset s_dcl_end - offset s_dcl
mov dl, x
mov dh, y
mov bp, offset s_dcl
int 10h
popa
jmp skip_dcl
s_dcl DB sdat
s_dcl_end DB 0
skip_dcl:
endm
clear_screen macro
pusha
mov ax, 0600h
mov bh, 0000_1111b
mov cx, 0
mov dh, 24
mov dl, 79
int 10h
popa
endm
print_space macro num
pusha
mov ah, 9
mov al, ' '
mov bl, 0000_1111b
mov cx, num
int 10h
popa
endm
jmp mo
curX dw 0
curY dw 0
curB dw 0
mo:
mov ax, 1003h ; disable blinking.
mov bx, 0
int 10h
; hide text cursor:
mov ch, 32
mov ah, 1
int 10h
; reset mouse and get its status:
mov ax, 0
int 33h
cmp ax, 0
jne ok
print 1,1,0010_1111b, " mouse not found :-( "
jmp stop
ok:
clear_screen
print 7,7,0010_1011b," note: in the emulator you may need to press and hold mouse buttons "
print 7,8,0010_1011b," because mouse interrupts are not processed in real time. "
print 7,9,0010_1011b," for a real test, click external->run from the menu. "
print 10,11,0010_1111b," click/hold both buttons to exit... "
mov ax, 1
int 33h
check_mouse_buttons:
mov ax, 3
int 33h
cmp bx, 3
je hide
cmp cx, curX
jne print_xy
cmp dx, curY
jne print_xy
cmp bx, curB
jne print_buttons
print_xy:
print 0,0,0000_1111b,"x="
mov ax, cx
call print_ax
print_space 4
print 0,1,0000_1111b,"y="
mov ax, dx
call print_ax
print_space 4
mov curX, cx
mov curY, dx
jmp check_mouse_buttons
print_buttons:
print 0,2,0000_1111b,"btn="
mov ax, bx
call print_ax
print_space 4
mov curB, bx
jmp check_mouse_buttons
hide:
mov ax, 2
int 33h
clear_screen
print 1,1,1010_0000b," hardware must be free! free the mice! "
stop:
mov ah, 1
mov ch, 0
mov cl, 8
int 10h
print 4,7,0000_1010b," press any key.... "
mov ah, 0
int 16h
ret
print_ax proc
cmp ax, 0
jne print_ax_r
push ax
mov al, '0'
mov ah, 0eh
int 10h
pop ax
ret
print_ax_r:
pusha
mov dx, 0
cmp ax, 0
je pn_done
mov bx, 10
div bx
call print_ax_r
mov ax, dx
add al, 30h
mov ah, 0eh
int 10h
jmp pn_done
pn_done:
popa
ret
endp
end menu
what do you think is wroung with it?