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: