hey all,

im trying to compare two strings 8 characters long, the first was predefined and the second was entered by the user. i tried used (cmpsb) instruction and byte by byte comparison, but both failed

its for a project that requires a student to enter their number and password, then outputs the courses a student should take.

i've figured the the BX register is not loaded the right value, also im not sure my variable declaration for input is right.

please take a look at the highlighted code

thanks in advnace

.MODEL SMALL
.STACK 100H
.DATA

st1	db 13,10,"You are a first-year student; you should register MATH 141, COMP142, ENGC 101.$"
st2	db 13,10,"You are a second-year student; you should register ENCS 234, COMP 231, ENEE 231.$"
st3	db 13,10,"You are a third-year student; you should register ENCS 331, COMP 333, ENEE 331.$"
st4	db 13,10,"You are a fourth-year student; you should register ENCS 432, COMP 433, MATH 331.$"
st5	db 13,10,"You are a fifth-year student; you should register ENCS 535, ENCS 536, ENCS 539.$"

mess1	db 13,10,"Enter Student Number:$"
mess2	db 13,10,"Enter Password:$"

pass	db "word1234"

stdnum	db 8 dup (' ')
stdpas	db 8 dup (' ')

.code

start:

	call setscr			;set screen


	mov	Ax, @data
	mov	ds, Ax

	
	mov	dx, offset mess1	;print "Enter Student Number"
	call	prnt

	mov	ah, 0ah			;take input for student number
	mov	dx, offset stdnum
	int	21h


	mov	dx, offset mess2	;print "Enter Password"
	call	prnt 

	mov	ah, 0ah			;take input for student password
	mov	dx, offset stdpas
	int	21h	

	call	cmppass	




	mov AH, 4cH
	int 21H

; ------------------------ print functions ------------------------


prnt: 

	mov ah, 09h
	int 21h
	ret

prntst1:				;print 1st year courses

	mov dx, offset st1
	call prnt
	ret	

prntst2:				;print 2nd year courses

	mov dx, offset st2
	call prnt	
	ret

prntst3:				;print 3rd year courses

	mov dx, offset st3
	call prnt	
	ret

prntst4:				;print 4th year courses

	mov dx, offset st4
	call prnt	
	ret

prntst5:				;print 5th year courses

	mov dx, offset st5
	call prnt	
	ret

; ----------------------- compare functions -----------------------

cmppass:


	mov	ax, @data
	mov	bx, @data
	mov	al, [pass]
	mov	bl, [stdpas]
    mov dx, 0
	mov	cx, 8
	
C20:	
    
    cmp	al,bl
	jne	noteq
	
	inc	al
	inc	bl
	dec	cx
	cmp	cx, 0
	jne	c20
	
	

	call	prntst1

	
ret


noteq:

	call	prntst3
	ret


; --------------- set screen, set color and set cursor --------------

setscr:

	mov ax, 0600H
	mov cx, 0        
	mov dx, 184FH    
	mov bh, 7
	int 10H

        mov ah,06H      
        mov al,00H      
        mov bh,89H     	;green background and red forground
        mov cx,0    	
        mov dx,184FH    
        int 10H

        mov ah,2      	;set cursor
        mov dh,02H      ;row number
        mov dl,00H      ;column number
        mov bh,0        ;page number
        int 10H

	ret




end start
This article has been dead for over six months. Start a new discussion instead.