任务如下:
字母表中有一个给定的字符串,例如 fgh 。我必须用给定方向的 n letteres移动这个字符串。例如,如果方向是1,并且 n = 3 ,则输出将是 ijk 。我已经创建了一个可以计算这些移位的程序,但是如果它到达字母表的末尾,它会在ASCII表中写下以下字符。例如,如果输入是 vwy ,则输出将是 yz {。我目前有一个代码片段:
loop1: ; if the direction is forwards
MOV AL, [ESI]
CMP AL, 0
JE end
ADD AL, 3
INC ESI
Call WriteChar
LOOP loop1
loop2: ; if the direction is backwards
MOV AL, [ESI]
CMP AL, 0
JE end
SUB AL, 3
Call WriteChar
INC ESI
LOOP loop2
你能帮我解决一下,并告诉我如何修改这段代码以使用上面的输入( xyz ,n = 3)?
答案 0 :(得分:0)
当“向上移动”时,在修改角色后,需要将其与字母表中的最后一个字符进行比较,如果超过该值,则必须对其进行操作。如何处理它应该在“任务”的定义中指定,它可能涉及环绕字母表,因此,基本上,从它减去26。
当“向下移动”时,你需要做相反的事情:将新计算的字符与字母表中的第一个字符进行比较,如果低于该字符,则将26添加到其中。
“在x86程序集中对此进行编码是留给学生的练习。”