【问题标题】:How to toggles the low order of bit in assembly language 8086如何在汇编语言 8086 中切换低位
【发布时间】:2017-05-05 13:41:20
【问题描述】:

首先,我是汇编语言的初学者,现在我正在学习微处理器。我们编写了一些小程序。但是,我正在开发名为“基本加密方案(BES)”的程序,其想法是切换用户输入的字符的低位。然后,从 1-9 获取输入并将其添加到切换字符。最后,打印出来。例如,如果输入字符为 A,输入键值为 6。程序应取 A 的 ASCIl 值 01000001,切换位 [o:o],产生 01000000,然后添加输入值键 6。最终输出字符为 01000110。这是 ASCII 值 F

好消息是我编写了几乎所有东西: => 我编写了一条包含多个字符的消息并将它们保存在 [si] => 我编写了一条消息,该消息接受输入键值并将其转换为注册并将其保存在 bl => 我编写了一个 cod,它将从 [si] 和 [di] 获取字符串并将它们打印在屏幕上。

正是我需要一个通过从 [si] 获取字符串和从 (bl) 获取密钥来应用基本加密方案方法的 cod。

谢谢

【问题讨论】:

  • xor, add(请记住'z' + 6 == 128,因此您可能应该决定,如果结尾字母旋转回A/a(即Z->B 2,z->b 用于 2 => 有点复杂的逻辑),或者如果您将在 32-122 之类的“有效范围”内旋转,那么Z->a 用于 7,以及z-><space> 为 1))
  • 如果你做了所有的编程,你应该有一些代码给我们看。可能是minimal reproducible example,带有一两条评论,显示您遇到的问题。
  • 不需要从 z 旋转回 a ,我要有效范围
  • 就这样吧。如果卡住,请查看 8086 指令集列表(原始 8086 很短,我认为 wikipedia 每个 CPU 代都有它)并通过它,听起来可用,然后检查详细信息。对于您正在执行的代码,您可能只需要(没有 I/O 部件,这些部件在汇编中是特定于平台的,可以从示例中复制):mov, add/sub, j<condition>, cmp, xor, jmp ...call/ret 可能很方便避免代码重复并给出它一些结构,push/pop 是临时保存值的简单方法。但是继续探索所有这些,它会帮助你感受它。

标签: assembly x86 x86-16 emu8086


【解决方案1】:

顶部:

从 [si] 中取出字符串

mov dl, [si]

切换位 [o:o]

xor dl, 1

添加输入值键

add dl, bl

在屏幕上打印出来。

mov ah, 02h
int 21h

既然你已经

编写了一个包含多个字符并将它们保存在 [si] 中的按摩

你将把这个字符串的长度保存在某个内存位置或寄存器中。我认为CX 寄存器会是一个好地方。

要处理整个字符串,你:

  • 增加指针SI
  • 减小长度CX
  • 如果长度不为零,则从 顶部重复:

【讨论】:

  • ++,你应该得到程序化的按摩
猜你喜欢
  • 1970-01-01
  • 2014-12-15
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 2019-05-25
  • 2015-02-26
  • 2019-12-29
  • 1970-01-01
相关资源
最近更新 更多