Сборка Intel 8086 Как заменить символы не алфавита c пробелом? - PullRequest
0 голосов
/ 12 марта 2020

Мне нужно написать ассемблерный код для замены каждого алфавита c символа в строке на прописные буквы. И если есть какие-либо не алфавитные c символы, их следует заменить на пробел (⌴).

Я сделал заглавную часть, но я понятия не имею, как сделать изменение не алфавитного c символов в пробел.

Например:

Для кода, который я написал, я могу получить такой вывод:

AbcUniversity $ → ABCUNIVERSITY $

Когда я меняю str на 02A / b c Un1versity * \

, вывод должен выглядеть следующим образом:

02A / b c Un1versity * \ $ → AB C UN VERSITY $

Как я могу это сделать, кто-нибудь может мне помочь?

code segment

init:
  mov ax, data
  mov ds, ax

  mov si, offset str

islower:
  mov al, [si]
  cmp al, '$'
  je  terminate
  cmp al, 61h
  jge modifyiflower
  jmp nextchar

modifyiflower:
  cmp al, 7ah
  jle toUpper 
  jmp nextchar

toUpper:
  sub al, 20h
  mov [si], al

nextchar:
  inc si
  jmp islower 



terminate:
  hlt

code ends


data segment

  str db "02So/Ntr U1vity*\$"

data ends
end init
...