2014-04-05 18 views
0

我剛開始做我的項目爲大學從emu8086.com在大會使用鴯鶓8086的問題,跳不工作

可惜我就死在這樣一個早期的統計翻轉卡片遊戲, 使用仿真器。

不知何故不能完全弄清楚什麼是錯的。

使用JZ或JE​​的跳轉,應該工作,如果我使用cmp在2等值,但它不工作。

什麼都沒有發生!我用

mov ah,1 
int 21h 

cmp al,1 or cmp al,'1' 
JE or JZ Card1 

,但它不跳不管我寫的東西,

我全碼:

include "emu8086.inc" 
; multi-segment executable file template. 

data segment 
    ; add your data here! 
    pkey db "press any key...$" 
    data_error dw "input error.... $" 
    datar db 0  ;row 
    datac db 0  ;cloumn 
    datacard db '1','2','3','4','5','6','7','8','9' 
    data1 dw ? 
    data2 dw ? 
    dataf dw "False    $" 
    endapp dw "END GAME....    $" 
    datat dw "True    $" 
    datas db '0' 
    score dw "Score : $" 
    x db ? 
    y db ? 
    a db '0','0','0','0','0','0','0','0' 
    data3 db 'D','B','A','O','C','C','A','B','D' 

ends 

stack segment 
    dw 128 dup(0) 
ends 

code segment 
start: 
; set segment registers: 
    mov ax, data 
    mov ds, ax 
    mov es, ax 

    ; add your code here 

GOTOXY 25,0 
;PRINT 'Wellcom to My Flipping Game !?!' 
GOTOXY 10, 5  
mov si,offset data3 
PUTC [si] 
GOTOXY 15, 5 
inc si 
PUTC [si] 
GOTOXY 20, 5 
inc si 
PUTC [si] 
GOTOXY 10, 8 
inc si 
PUTC [si] 
GOTOXY 15, 8 
inc si 
PUTC [si] 
GOTOXY 20, 8 
inc si 
PUTC [si] 
GOTOXY 10, 11 
inc si 
PUTC [si] 
GOTOXY 15, 11 
inc si 
PUTC [si] 
GOTOXY 20, 11 
inc si 
PUTC [si] 

GOTOXY 10, 5 
mov si,offset datacard 
PUTC [si] 
GOTOXY 15, 5 
inc si 
PUTC [si] 
GOTOXY 20, 5 
inc si 
PUTC [si] 
GOTOXY 10, 8 
inc si 
PUTC [si] 
GOTOXY 15, 8 
inc si 
PUTC [si] 
GOTOXY 20, 8 
inc si 
PUTC [si] 
GOTOXY 10, 11 
inc si 
PUTC [si] 
GOTOXY 15, 11 
inc si 
PUTC [si] 
GOTOXY 20, 11 
inc si 
PUTC [si] 

GOTOXY 25, 15    


Print 'Enter your Selection : ' 

mov ah,1 
int 21h 

mov ah,al 

cmp ah,1 
JZ card1 

cmp ah,2 
JE card2 

cmp ah,3 
JE card3 

cmp ah,4 
JE card4 

cmp ah,5 
JE card5 

cmp ah,6 
JE card6 

cmp ah,7 
JE card7 

cmp ah,8 
JE card8 

cmp ah,9 
JE card9 

JMP deadend 

card1 : 

GOTOXY 10, 5  
mov si,offset data3 
PUTC [si] 
JMP deadend 

card2 : 

GOTOXY 15, 5  
mov si,offset data3 
inc si 
PUTC [si] 
JMP deadend 

card3 : 

GOTOXY 20, 5  
mov si,offset data3 
inc si 
inc si 
PUTC [si] 
JMP deadend 

card4 : 

mov si,offset data3 
inc si 
inc si 
inc si 
PUTC [si] 
JMP deadend 

card5 : 

mov si,offset data3 
inc si 
inc si 
inc si 
inc si 
PUTC [si] 
JMP deadend 

card6 : 

mov si,offset data3 
inc si 
inc si 
inc si 
inc si 
inc si 
PUTC [si] 
JMP deadend 

card7 : 

mov si,offset data3 
inc si 
inc si 
inc si 
inc si 
inc si 
inc si 
PUTC [si] 
JMP deadend 

card8 : 

mov si,offset data3 
inc si 
inc si 
inc si 
inc si 
inc si 
inc si 
inc si 
PUTC [si] 
JMP deadend 

card9 : 

mov si,offset data3 
inc si 
inc si 
inc si 
inc si 
inc si 
inc si 
inc si 
inc si 
PUTC [si] 
JMP deadend 



deadend:    


    lea dx, pkey 
    mov ah, 9 
    int 21h  ; output string at ds:dx 

    ; wait for any key....  
    mov ah, 1 
    int 21h 

    mov ax, 4c00h ; exit to operating system. 
    int 21h  
ends 

end start ; set entry point and stop the assembler. 

我離開樣品的代碼作出在模擬器一個新的文件在我的代碼,稍後將刪除它們。

你看到我把AL進去啊,用它也只是怎麼我想不出什麼錯, 但它沒有當我用AL本身在CMP要麼

非乙腦的工作/ JZ跳轉工作,只有JMP有效。

Tnx。

+0

您應該與「1」,「9」,而不是「1..9」進行比較。無論如何,將其減少到一個程序中,除了代碼讀取一個字符並打印某些字符等於任何值(例如''1'')的代碼之外,您已經刪除了所有內容。這應該會讓你更容易找到問題。 – Michael

+0

該死的網絡被關閉了2個小時,無論如何,我確實用'1''2'和'9'來檢查它,但仍然沒有結果。 – Pedram

回答

0

固定它,挺傻的,

的問題只是我在之前puting的空間:我拉布勒的!笑

card1 : 

.....而這應該是

card1: 

我也變回我的代碼使用AL的一切,並在數把「」。