8086汇编语言关于登录注册账号
8086 assembly language about log in and sign up account
因为登录部分很好,那部分一切正常。但是对于注册新账号部分,虽然我满足了用户名不能重复和用户名长度应超过5个字母的所有要求,但它仍然显示无效信息。
这是我的代码
这是我现在面临的问题:
虽然有点长,希望大家抽空看看。这是我的作业。
一个不幸的fall-through问题
call isValidUserName
cmp aX, 1
JNE oor4
mov si, offset regUser
call checkLength
cmp cx, 5
JBE oor5
<=== All is well: Need to jump to `askPsw` here
oor4:
jmp invalidacc
oor5:
jmp invalidUserLength
askPsw:
代码缺少一个关键 jmp
。目前代码在 oor4 中失效,尽管新用户名足够长。
下一个代码解决了这个问题并避免了向程序添加另一个跳转(主要是通过反转条件):
call isValidUserName ; -> AX=[0=NOK, 1=OK]
cmp ax, 1
JNE oor4
mov si, offset regUser
call checkLength ; -> CX
cmp cx, 5
JA askPsw
oor5:
jmp invalidUserLength
oor4:
jmp invalidacc
askPsw:
因为登录部分很好,那部分一切正常。但是对于注册新账号部分,虽然我满足了用户名不能重复和用户名长度应超过5个字母的所有要求,但它仍然显示无效信息。
这是我的代码
这是我现在面临的问题:
虽然有点长,希望大家抽空看看。这是我的作业。
一个不幸的fall-through问题
call isValidUserName cmp aX, 1 JNE oor4 mov si, offset regUser call checkLength cmp cx, 5 JBE oor5 <=== All is well: Need to jump to `askPsw` here oor4: jmp invalidacc oor5: jmp invalidUserLength askPsw:
代码缺少一个关键 jmp
。目前代码在 oor4 中失效,尽管新用户名足够长。
下一个代码解决了这个问题并避免了向程序添加另一个跳转(主要是通过反转条件):
call isValidUserName ; -> AX=[0=NOK, 1=OK]
cmp ax, 1
JNE oor4
mov si, offset regUser
call checkLength ; -> CX
cmp cx, 5
JA askPsw
oor5:
jmp invalidUserLength
oor4:
jmp invalidacc
askPsw: