assembly 我有一个索引问题

yv5phkfx  于 2023-01-17  发布在  其他
关注(0)|答案(1)|浏览(121)

我需要从键盘输入名称,然后显示它们,每行一个。它们应该显示为前面有索引。例如,如果我输入名称elena和maria,则应该显示为1.elena 2.maria
我尝试添加一个计数器变量,但是当我尝试在DosBox中运行程序时出现了一些错误。有人能帮助我吗?下面是我的clean label,它正在输出名称:

lista:
  mov  dx, offset nume
print_names:
push dx
  mov  dl, 13          ; carriage return
  mov  ah, 02h
  int  21h
  mov  dl, 10          ; linefeed
  mov  ah, 02h
  int  21h
  pop  dx
  mov dx, offset index
  mov ah, 9
  int 21h
  inc byte ptr index
  mov  dx, offset nume
  mov  ah, 09h
  int  21h
  ; (*)
  add  dx, 5 + 1
  cmp  dx, numePointer ; check if the current name is the last one
  jb   print_names
  jmp  bucla           ; return to main loop
kgsdhlau

kgsdhlau1#

添加正在破坏DX指针的名称显示!
为什么要在procendp之间添加代码?
punct db '.' ,10, '$'不需要10。应该是punct db '.$'或更好,将其与 index 组合,如index db '?.$'
更好的是,把换行符也和它结合起来:

lista:
  mov  dx, offset nume
print_names:
  push dx                        ; (1)
  mov  dx, offset numeIndex
  mov  ah, 09h
  int  21h
  inc  byte ptr [numeIndex + 2]  ; "1" -> "2" -> "3" ...
  pop  dx                        ; (1)

  mov  ah, 09h
  int  21h
  add  dx, 5 + 1
  cmp  dx, numePointer ; check if the current name is the last one
  jb   print_names
  jmp  bucla           ; return to main loop

  ...

numeIndex db 13, 10, 49, 46, 36

相关问题