按下菜单键,在装配时在cmd上打开.txt文件

时间:2017-05-30 17:40:47

标签: assembly x86 dos dosbox

我目前正在为大学开发一个装配项目,包括为迷宫游戏创建一个菜单,但首先我只需按下键即可访问所需的菜单选项&#39 ; 1',然后我的cmd应该显示' Labirinto.txt'那是我的迷宫。我已经有“退出”选项运行的键,但我的播放选项是' JOGAR'它不起作用。我正在打开菜单.txt'并且打印是cmd上的内容,我想对“maze.txt”做同样的事情,但我不知道为什么。这是我的代码:

.8086
.model small
.stack 2048h

dseg    segment para public 'data'

        Erro_Open       db      'Erro ao tentar abrir o ficheiro$'
        Erro_Ler_Msg    db      'Erro ao tentar ler do ficheiro$'
        Erro_Close      db      'Erro ao tentar fechar o ficheiro$'
        Fich1           db      'Menu.TXT',0
        Fich2           db      'Labirinto.TXT',0
        Fich3           db      'Top10.TXT', 0
        HandleFich      dw      0
        car_fich        db      ?

dseg    ends



cseg    segment para public 'code'

    assume  cs:cseg, ds:dseg

LE_TECLA    PROC

        mov     ah,08h
        int     21h
        mov     ah,0
        cmp     al,0
        jne     SAI_TECLA
        mov     ah, 08h
        int     21h
        mov     ah,1

SAI_TECLA:  RET
LE_TECLA    endp

carrega_labirinto Proc

        mov     ah,3dh          ; vamos abrir ficheiro para leitura 
        mov     al,0            ; tipo de ficheiro  
        lea     dx,Fich2            ; nome do ficheiro
        int     21h         ; abre para leitura 
        ;jc      erro_abrir     ; pode aconter erro a abrir o ficheiro 
        mov     HandleFich,ax       ; ax devolve o Handle para o ficheiro 
        ;jmp     ler_ciclo
        ret

carrega_labirinto endp

carrega_top10 Proc

        mov     ah,3dh          ; vamos abrir ficheiro para leitura 
        mov     al,0            ; tipo de ficheiro  
        lea     dx,Fich3            ; nome do ficheiro
        int     21h         ; abre para leitura 
 ;       jc      erro_abrir     ; pode aconter erro a abrir o ficheiro 
 ;;       mov     HandleFich,ax     ; ax devolve o Handle para o ficheiro 
  ;      jmp     ler_ciclo
        ret
carrega_top10 endp

Main    Proc

        mov     ax,dseg
        mov     ds,ax


;abre ficheiro

        mov     ah,3dh          ; vamos abrir ficheiro para leitura 
        mov     al,0            ; tipo de ficheiro  
        lea     dx,Fich1            ; nome do ficheiro
        int     21h         ; abre para leitura 
        jc      erro_abrir      ; pode aconter erro a abrir o ficheiro 
        mov     HandleFich,ax       ; ax devolve o Handle para o ficheiro 
        jmp     ler_ciclo       ; depois de abero vamos ler o ficheiro 

erro_abrir:
        mov     ah,09h
        lea     dx,Erro_Open
        int     21h
        jmp     sair

ler_ciclo:
        mov     ah,3fh           
        mov     bx,HandleFich        
        mov     cx,1            
        lea     dx,car_fich     
        int     21h             
      jc        erro_ler        
      cmp       ax,0            ficheiro 
      je        fecha_ficheiro   
      mov     ah,02h            
      mov       dl,car_fich     
      int       21h             
      jmp       ler_ciclo       

erro_ler:
        mov     ah,09h
        lea     dx,Erro_Ler_Msg
        int     21h

fecha_ficheiro:                 ; vamos fechar o ficheiro 
        mov     ah,3eh
        mov     bx,HandleFich
        int     21h
        jnc     LER_OPCAO

        mov     ah,09h          
        lea     dx,Erro_Close
        Int     21h

LER_OPCAO:
        call LE_TECLA
    ;   cmp     ah, 1
    ;   je      ESTEND

        CMP     AL, '1' 
        JE      jogar
        CMP     AL, '2' 
        JE      TOP10
        CMP     AL, '3' 
        JE      CONFIGURAR
        CMP     AL, '4' 
        JE      SAIR
        jmp     LER_OPCAO

JOGAR:  
    ;   call carrega_labirinto      ;1
        jmp     LER_OPCAO

TOP10:  
;       call carrega_top10      ;2
        jmp     LER_OPCAO

CONFIGURAR: 
;       call carrega_configuracao       ;3
        jmp     LER_OPCAO

SAIR:   
        mov     ah,4CH
        INT     21H

Main    endp
cseg    ends
end     Main           

0 个答案:

没有答案