org je skip_copy mov player_char,al jmp found skip_copy: jmp

org 100h.model small.stack 100h.datastr db ‘Connect4’str2 db ‘Use Mouse to Select Col’,’$’str3 db ‘Player: ‘,’$’str4 db ‘Player 1 won’,’$’str5 db ‘Player 2 won’,’$’clrf db 0ah,0dh divisor db 8hname_size dw 8temp_count dw ? temp_count2 dw ? player_turn dw 31h  player_char db ?win_count db 0 col db 0row db 0.codemain proc     mov ax,@data    mov ds,ax     lea si,str    call print_name     mov dh,2    mov dl,30    call cursor_mov    lea dx,str2    call print_str    call print_row_line     call print_col_line     call game_play    mov dh,4    mov dl,30    call cursor_mov        cmp cl,3    je player1_won        lea dx,str5        call print_str        jmp skip_player1_won        player1_won:    lea dx,str4    call print_str    skip_player1_won:        push 0000h      retmain endp ;;;;—————;;;;—————;;;; game_play proc        mov ax,0  ;;;;    INT 33h   ;;;  to output cursor    mov ax,1  ;;    int 33h   ; game_play_loop:    mov dh,3    mov dl,30    call cursor_mov    lea dx,str3    call print_str    mov dx,player_turn    mov ah,02h    int 21h      pointer_input:     mov ax,003     int 33h     cmp bx,2    jne pointer_input      mov temp_count,dx    mov ax,cx    div divisor    mov dl,al    mov ax,temp_count    div divisor    mov dh,al      cmp dh,12h    jne pointer_input    cmp dl,1Fh    jl pointer_input    cmp dl,29h    ja pointer_input    mov cx,6d    char_read_loop:         sub dh,2         call cursor_mov           mov row,dh         mov col,dl         call read_char_cursor         cmp al,0h         jne char_read_loop_                mov ah,09                cmp player_turn,31h                jne p2:                mov al,3;5fh ;;;3 for p1                jmp skip_p2                p2:                    mov al,5 ;;; 5 for p2                 skip_p2:                mov cx,1                mov bl,00001111b                 int 10h                jmp char_read_loop_finish    char_read_loop_:    loop char_read_loop    jcxz game_play_loop_2    char_read_loop_finish:             cmp player_turn,31h             jne pl2                 mov player_turn,32h                 jmp skip_pl2             pl2:                 mov player_turn,31h             skip_pl2:       game_play_loop_:             mov win_count,0               mov player_char,al            call win_check            cmp cl,0            je continue                 ret       game_play_loop_2:                       continue:    jmp game_play_loop         ret   game_play endp;;;;—————;;;;————— win_check proc    mov dh,row    mov cx,06h    mov dl,1Fh      win_check_loop_horizontal:             call cursor_mov             call read_char_cursor             cmp al,player_char             je found                    mov win_count,0                   cmp al,0                   je skip_copy                    mov player_char,al                    jmp found                   skip_copy:                   jmp not_win                                 found:                inc win_count              skip_found:                cmp win_count,4                jne not_win                    mov cl,player_char                    ret                not_win:                          add dl,2         loop win_check_loop_horizontal    mov cx,06h    mov dl,col    mov dh,10h    mov win_count,0    win_check_loop_vertical:           call cursor_mov             call read_char_cursor             cmp al,player_char             je found2                    mov win_count,0                   cmp al,0                   je skip_copy2                    mov player_char,al                    jmp found2                   skip_copy2:                   jmp not_win2                                 found2:                inc win_count              skip_found2:                cmp win_count,4                jne not_win2                    mov cl,player_char                    ret                not_win2:                         sub dh,2    loop   win_check_loop_vertical    mov cx,04h    mov dl,col    mov dh,row    mov win_count,0    win_check_loop_daigonal1:           call cursor_mov             call read_char_cursor             cmp al,player_char             je found3                    mov win_count,0                   cmp al,0                   je skip_copy3                    mov player_char,al                    jmp found3                   skip_copy3:                   jmp not_win3                                 found3:                inc win_count              skip_found3:                cmp win_count,4                jne not_win3                    mov cl,player_char                    ret                not_win3:                         sub dh,2                    add dl,2    loop   win_check_loop_daigonal1        mov cx,04h    mov dl,col    mov dh,row    mov win_count,0    win_check_loop_daigonal2:           call cursor_mov             call read_char_cursor             cmp al,player_char             je found4                    mov win_count,0                   cmp al,0                   je skip_copy4                    mov player_char,al                    jmp found4                   skip_copy4:                   jmp not_win4                                 found4:                inc win_count              skip_found4:                cmp win_count,4                jne not_win4                    mov cl,player_char                    ret                not_win4:                         add dh,2                    sub dl,2    loop   win_check_loop_daigonal2    mov cx,04h    mov dl,col    mov dh,row    mov win_count,0    win_check_loop_daigonal3:           call cursor_mov             call read_char_cursor             cmp al,player_char             je found5                    mov win_count,0                   cmp al,0                   je skip_copy5                    mov player_char,al                    jmp found5                   skip_copy5:                   jmp not_win5                                 found5:                inc win_count              skip_found5:                cmp win_count,4                jne not_win5                    mov cl,player_char                    ret                not_win5:                         add dh,2                    add dl,2    loop   win_check_loop_daigonal3    mov cx,04h    mov dl,col    mov dh,row    mov win_count,0    win_check_loop_daigonal4:           call cursor_mov             call read_char_cursor             cmp al,player_char             je found6                    mov win_count,0                   cmp al,0                   je skip_copy6                    mov player_char,al                    jmp found6                   skip_copy6:                   jmp not_win6                                 found6:                inc win_count              skip_found6:                cmp win_count,4                jne not_win6                    mov cl,player_char                    ret                not_win6:                         sub dh,2                    sub dl,2    loop   win_check_loop_daigonal4                                                  retwin_check endp    ;;;;—————;;;;—————;;;;—————read_char_cursor proc mov ah,8 mov bh,0 int 10h       ret  read_char_cursor endp;;;;—————;;;;—————print_str proc    mov ah,09h    int 21h    retprint_str endp;;;;—————;;;;—————print_row_line proc    mov dh,5    mov dl,30    mov cx,7d    print_row_line_loop:        call cursor_mov        mov ah,09        mov al,2eh        mov temp_count,cx        mov cx,13        mov bl,00001111b         int 10h        add dh,2         mov cx,temp_count   loop print_row_line_loop                     ret print_row_line endp;;;;—————–print_col_line proc    mov dh,6    mov cx,6d  print_col_line_loop:     mov dl,30     mov temp_count2,cx     mov cx,7d    print_col_line_loop2:        mov temp_count,cx        call cursor_mov        mov ah,09        mov al,02eh                mov cx,1        mov bl,00001111b         int 10h         inc dl        call cursor_mov        inc dl       mov cx,temp_count        loop print_col_line_loop2        add dh,2       mov cx,temp_count2    loop print_col_line_loop      mov cx,6d    mov dl,31    call cursor_mov    loop_print_col_3:        mov temp_count,cx                         mov ah,09        mov al,01eh                mov cx,1        mov bl,00001111b         int 10h         mov cx,temp_count         add dl,2        call cursor_mov        loop loop_print_col_3            retprint_col_line endp    ;;;;—————-;;;;—————-;;;; to print connect4print_name proc       mov dl,37    mov dh,1    mov cx,name_size    print_name_loop:         call cursor_mov        mov ah,09        mov al,si        mov temp_count,cx        mov cx,1        mov bl,11110000b         mov bh,0        int 10h        mov cx,temp_count         inc si        inc dl     loop print_name_loop        retprint_name endp;;;;—————–cursor_mov proc mov ah,2 mov bh,0  int 10h          retcursor_mov endp;——————-;——————-ret

x

Hi!
I'm Neil!

Would you like to get a custom essay? How about receiving a customized one?

Check it out