用于移动具有给定字符数的字符串的汇编程序

时间:2017-05-08 21:00:47

标签: assembly x86

任务如下:
字母表中有一个给定的字符串,例如 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)?

1 个答案:

答案 0 :(得分:0)

当“向上移动”时,在修改角色后,需要将其与字母表中的最后一个字符进行比较,如果超过该值,则必须对其进行操作。如何处理它应该在“任务”的定义中指定,它可能涉及环绕字母表,因此,基本上,从它减去26。

当“向下移动”时,你需要做相反的事情:将新计算的字符与字母表中的第一个字符进行比较,如果低于该字符,则将26添加到其中。

“在x86程序集中对此进行编码是留给学生的练习。”