Assembly 如何在汇编语言8086中切换位的低位
首先,我是汇编语言的初学者,现在我正在学习微处理器。我们编了一些小程序。然而,我正在开发一个名为“基本加密方案(BES)”的程序,其目的是切换用户输入的字符位的低位。然后,从1-9中获取输入,并将其添加到切换字符中。最后,打印出来。例如,如果输入字符为A且输入键值为6。该程序应获取ASCIl值A,01000001,切换位[o:o],生成01000000,然后添加输入值键6。最终输出字符为01000110。哪个是ASCII值F 好消息是,我几乎对所有内容都进行了编程: =>我编写了一条包含多个字符的消息,并将其保存在[si]中 =>我编写了一条消息,获取输入键值并将其转换为寄存器并保存在bl中 =>我编程了一个cod,它将从[si]和[di]中提取字符串并在屏幕上打印出来 我需要一个cod,它应用基本加密方案的方法,从[si]中获取字符串,从(bl)中获取密钥 谢谢顶部: 从[si]中提取字符串 切换位[o:o] 添加输入值键 在屏幕上打印它们 既然你已经 编程了一个按摩,该按摩包含多个字符并保存在[si]中 您将已将此字符串的长度保存在某个内存位置或寄存器中。我认为Assembly 如何在汇编语言8086中切换位的低位,assembly,x86,x86-16,emu8086,Assembly,X86,X86 16,Emu8086,首先,我是汇编语言的初学者,现在我正在学习微处理器。我们编了一些小程序。然而,我正在开发一个名为“基本加密方案(BES)”的程序,其目的是切换用户输入的字符位的低位。然后,从1-9中获取输入,并将其添加到切换字符中。最后,打印出来。例如,如果输入字符为A且输入键值为6。该程序应获取ASCIl值A,01000001,切换位[o:o],生成01000000,然后添加输入值键6。最终输出字符为01000110。哪个是ASCII值F 好消息是,我几乎对所有内容都进行了编程: =>我编写了一条包含多个字符
CX
寄存器是个好地方
要处理整个字符串,请执行以下操作:
- 增加指针
SI
- 减小长度
CX
- 如果长度不为零,则从顶部重复:
'z'+6==128
,因此您可能应该决定,如果结尾字母旋转回A/A(即,对于2,z->B
,对于2=>逻辑有点复杂),或者您是否将在某个“有效范围”内旋转就像32-122一样,如果你做了所有的编程,你应该有一些代码给我们看。也许是a,加上一两条注释,说明你被卡住的部位。不需要从z旋转回a,我想要一个有效的范围,就这么做吧。如果卡住了,请查看8086指令集列表(它是原始8086的缩写,我认为wikipedia在每一代CPU中都有它),然后检查它,什么听起来有用,然后检查细节。对于您正在执行的代码,您可能只需要(没有I/O部件,这些部件在汇编中是特定于平台的,并且可以从示例中复制):mov、add/sub、j、cmp、xor、jmp
call/ret
可以方便地避免代码重复,并为其提供一些结构,push/pop
是临时保留值的简单方法。但是,继续探索所有这些,它将帮助你获得它的感觉。++,你应该得到程序化的按摩
mov dl, [si]
xor dl, 1
add dl, bl
mov ah, 02h
int 21h