Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 使用Emu 8086组装时出现问题,跳转不工作_Assembly_X86 16 - Fatal编程技术网

Assembly 使用Emu 8086组装时出现问题,跳转不工作

Assembly 使用Emu 8086组装时出现问题,跳转不工作,assembly,x86-16,Assembly,X86 16,我刚开始做我的大学纸牌游戏项目, 使用emu8086.com上的emulator 不幸的是,我被这么早的统计数据给卡住了 不知怎么搞不清楚出了什么问题 如果我在2个相等的值上使用cmp,使用JZ或JE的跳转应该有效,但它不起作用 什么也没发生!我曾经 mov ah,1 int 21h cmp al,1 or cmp al,'1' JE or JZ Card1 但无论我写什么,它都不是跳跃 我的完整代码: include "emu8086.inc" ; multi-segment execu

我刚开始做我的大学纸牌游戏项目, 使用emu8086.com上的emulator

不幸的是,我被这么早的统计数据给卡住了

不知怎么搞不清楚出了什么问题

如果我在2个相等的值上使用cmp,使用JZ或JE的跳转应该有效,但它不起作用

什么也没发生!我曾经

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.
我在代码中留下了在emulator中创建新文件的示例代码,稍后将删除它们

你看,我把艾尔放进了啊,也用了它,只是因为我不知道出了什么问题, 但当我在cmp中使用AL时,它也不起作用

没有JE/JZ跳转工作,只有JMP一个工作


Tnx.

修复了它,非常愚蠢

问题是我之前在标签上放了一个空格!哈哈

。。。。。虽然它本该如此

card1:

我还将代码改回使用AL,并在数字上加上“”。

您应该与
'1'..'9'
进行比较,而不是
1..9
。无论如何,把它简化为一个程序,在这个程序中,除了读取字符和打印字符的代码之外,您已经删除了所有内容,如果字符等于任何值(比如
'1'
)。这会让你更容易找到问题。该死的网络瘫痪了2个小时,不管怎样,我也用“1”、“2”和“9”检查了它,仍然没有结果。
card1: