2017-05-05 88 views
-4

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

可喜的是,我编程几乎一切: =>予编程的需要多于一个字符,并将其保存在消息[SI] =>我编写了一个消息,输入密钥值并将其转换为注册并保存在bl =>我编写了一个鳕鱼,它将从[si]和[di]中取出字符串并将它们打印在屏幕上。

正是我需要一个应用基本加密方案的方法,通过从[si]和从(bl)的密钥。

谢谢

+1

['xor'](http://x86.renejeschke.de/html/file_module_x86_id_330。html),['add'](http://x86.renejeschke.de/html/file_module_x86_id_5.html)(请记住''z'+ 6 == 128',所以你应该决定,如果结尾的字母旋转回A/a(即''Z'->'B'为2,'z'->'b'为2 =>有点复杂的逻辑),或者如果你将在一些“有效范围” 32-122,所以'Z'->'a'为7,'z'->''为1)) – Ped7g

+2

如果你做了所有的编程,你应该有一些代码给我们看。也许一个[MCVE],有一两个评论显示你被卡住的部分。 –

+0

无需从z旋转回a,我想要有效范围 –

回答

2

上:

采取串从[SI]

mov dl, [si] 

触发位[O:O]

xor dl, 1 

添加的输入值键

add dl, bl 

打印它们在屏幕上。

mov ah, 02h 
int 21h 

既然你已经

程序性按摩的需要多于一个字符,并将它们保存在[SI]

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

处理整个字符串,那么,您:

  • 增量指针SI
  • 递减长度CX
  • 如果长度不为零,就从顶部重复:
+1

++,您应该享受按摩程序 –