【发布时间】:2013-12-24 16:27:51
【问题描述】:
有很多有限状态机问的问题,但都与我的问题无关。
我需要 5 个方法
S0 S1 S2 S3 and read the input
我们从
开始S0
我们要打印状态 → 0 和输出 0→
读取输入 第一个在ebx,第二个在eax
. If (ebx ==0&&eax==0)
Call S0
.elseif (ebx==1)&&(eax==1)
Call S1
.else
Call S2
.endif
做完整的程序
这是我的代码: 这里的问题是输入不起作用。如果我输入 00,01,11 -> 它都给我相同的输出,这是不正确的。我想输入00调用S0,输入11调用S1。它没有这样做,我不知道为什么。 有谁能看出来。
TITLE 有限状态机 包括 Irvine32.inc E = 13 。数据 invalidMsg BYTE '无效输入',0 一个双字? b 双字? 数双字? prompt1 byte '输入0或1:',0 prompt2 byte '输入0或1:',0 num1 byte '现在的输出是 1 ',0 num2 byte '输出现在是 0',0 num3 byte '状态现在是 0 ',0 num4 byte '状态现在是 1 ',0 num5 byte '状态现在是 2 ',0 num6 byte '状态现在是 3 ',0 。代码 主进程 调用 clrscr mov edx,offset prompt1 调用 writestring 调用 readint 移动 a,ebx mov edx,offset prompt2 调用 writestring 调用 readint mov b,eax .if(ebx ==0 && eax == 0) 调用 S0 .elseif(ebx == 1 && eax == 1) 调用 S1 .elseif(ebx == 0 && eax == 1) 呼叫 S2 。别的 调用 S3 。万一 出口 主要ENDP S0 过程 mov edx,offset num3 调用 writestring 调用 crlf mov edx,offset num2 调用 writestring 调用 readint ret S0 端 S1 进程 mov edx,offset num4 调用 writestring 调用 crlf mov edx,offset num2 调用 writestring ret S1 端 S2 进程 mov edx,offset num5 调用 writestring 调用 crlf mov edx,偏移量 num1 调用 writestring 调用 crlf ret S2 端 S3 进程 mov edx,偏移量 num6 调用 writestring 调用 crlf mov edx,偏移量 num1 调用 writestring ret S3 终端 结束主【问题讨论】:
标签: assembly x86 masm state-machine irvine32