jwxie 0 Newbie Poster

I am new to assembly. I found this code here
http://www.daniweb.com/software-development/assembly/threads/117744

What I am having trouble with are the following lines

L0_95:   ; this segment prints ASCII code 0 - 95
mov si,6       ; refers to the string we declared at the beginning
mov cx,4       ; I think this is the height?

C1A:
; this loop adds the name of the column
mov al,string[0]
mov es:[si],al
mov al,string[2]
mov es:[si+6],al
mov al,string[4]
mov es:[si+24],al
mov al,string[6]
mov es:[si+28],al
add si,40           ;;;; what is this line?
loop C1A

mov si,122          ;;;; and these three lines?
mov bx,0
mov cx,4
C1B:push cx        ;;;; what are we pushing out of the counting register?
;;; in fact, what are these add si lines anyway? so many mov and add with integers i don't know 

mov cx,24
add si,40
C1C:push cx
call DEC_CONVERT
add si,2
call HEX_CONVERT
add si,2
call BIN_CONVERT
add si,2
call CHAR_CONVERT
inc bx
add si,126
pop cx
loop C1C
pop cx
sub si,3840
loop C1B

ret

L96_191:

I made a couple comments. They are my questions. In general, I am very confused with how to read these lines because I don't know what those integers mean.

mov si,122
mov bx,0
mov cx,4

Another question (beside the one already mentioned) is: where in the code determines the number of ACSII code to print? Each page allows up to 96 integers (first one is 0-95).

Thank you for all the helps! Thank you very much.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.