Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何在汇编语言8086中切换位的低位_Assembly_X86_X86 16_Emu8086 - Fatal编程技术网

Assembly 如何在汇编语言8086中切换位的低位

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 好消息是,我几乎对所有内容都进行了编程: =>我编写了一条包含多个字符

首先,我是汇编语言的初学者,现在我正在学习微处理器。我们编了一些小程序。然而,我正在开发一个名为“基本加密方案(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]中

您将已将此字符串的长度保存在某个内存位置或寄存器中。我认为
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