0

Ok, I've been trying different tutorials/methods of learning asm and right now I'm reading Dr. Paul Carters tutorial and using NASM and DJGPP to compile. I just got into the conditional/jump section and I wanted to test how the jumps work and ran into a problem. The read_char macro seems to never run and when I look into the registers EAX always has an ascii 'A' (linefeed) in it after the read_char is suppost to run. I can't even enter anything a 'y' or 'n'. I warn you I'm a beginner, and this is a corny test program.

%include "asm_io.inc"

segment .data
label1	db	"Enter your age: ", 0
label2	db	"Are your really ", 0
label3	db	" (y or n): ", 0
label4	db	"Wow, your old!", 0
label5	db	"Ok, sorry!", 0

segment .bss
age	resd 1
yorn	resd 1

segment .text
	global _asm_main
_asm_main:

	enter 0,0
	pusha

	mov eax, label1
	call print_string

	call read_int

	mov dword [age], eax

	mov eax, label2
	call print_string
	
	mov eax, dword [age]
	call print_int
	
	mov eax, label3
	call print_string

	mov eax, 0
	call read_char		; <-- will not get input

	mov dword [yorn], eax	

	cmp dword [yorn], 'y'
	jnz no

	call print_nl
	mov eax, label4
	call print_string

	popa
	mov eax, 0
	leave
	ret

no:
	call print_nl
	mov eax, label5
	call print_string


	popa
	mov eax, 0
	leave
	ret

Any comments or suggestions on how I can make things easier or avoid problems are very welcome. This has been driving me nutts:mad:

Also, I have tried commenting every line before the read_char untill the first call print_string and when I get to the read_int line and comment it also, then it works.

1
Contributor
3
Replies
4
Views
11 Years
Discussion Span
Last Post by cozofdeath
0

Nevermind, this is solved. Dr. Carter and some very nice people on the alt.lang.asm group helped me out.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.