微机原理
赤胫散
这个作者很懒,什么都没留下…
展开
-
微机原理 伪指令实例解析(4)
伪指令实例4;eg4.将字符串string中所有字母加密。assume cs:code,ds:datadata segment string db '123Hello!'data endscode segmentstart: mov ax,data mov ds,ax mov bx,offset stringx1: cmp bx,9 ;每次判断字符类型之前先判断一下循环因子 jae exit mov cl,[bx] cmp cl,'A' jb x2 cmp c原创 2020-10-29 16:23:46 · 488 阅读 · 0 评论 -
微机原理 反汇编实例6
实例7 secret6.exe解密过程:将SI中存储的ASCII码值赋值给AL,将其跟07做与运算,再跟30做或运算,所得结果跟DI中存储的ASCII码值相等。3(33,二进制是00110011),一个数跟30的或运算结果是33,则这个数可能是03、13、23、33。但同时这个数也是某个数跟07做与运算的结果,所以排除掉13、23、33。03是某个数跟07做与运算的结果,那么这个数可能是03、13、23、33。但是,可显示出来的ASCII码只有33这一个。——‘3’同理可推出其余6个数。可以发现原创 2020-10-29 14:55:01 · 132 阅读 · 0 评论 -
微机原理 反汇编实例5
实例6 secret5.exe将DI中存储的字符(y)赋值给AL,再加一(得到z),与07(二进制是00000111)做与运算,与30(二进制是00110000)做或运算。解密过程如下:z(7A,二进制是01111010),跟07做与运算的结果是00000010(02);将该结果跟30做或运算,结果为00110010(32)。——‘2’p(70,二进制是01110000),跟07做与运算的结果是00000000(00);将该结果跟30做或运算,结果为00110000(30)。——‘0’v(原创 2020-10-29 14:10:38 · 192 阅读 · 0 评论 -
微机原理 反汇编实例2
实例5 secret2.exe由分析可知:程序要求输入的字符串其实是提示正确信息字符串(you are welcome!)中取9位以内个数的字符。取法是取第1、3、5、7、9、11、13、15、17位上的字符的ASCII码加一。即zvbfxmpf!。因为循环因子CX最初的赋值是8,必须减到0为止,所以输入的字符串必须达到8位。所以答案有2种:输入zvbfxmpf或者zvbfxmpf!。截图如下:总结:该程序跟secret1.exe的不同之处在于,该程序的循环因子是一个提前固定好的常数8,所原创 2020-10-29 12:49:15 · 137 阅读 · 0 评论 -
微机原理 反汇编实例1
实例4 secret1.exeMOV AH,0AINT 21系统调用,输入一个字符串,(加上最后的回车也是一个字符)长度不超过0A,即10。所以最多只能输入9个字符。DS:0000用来存储字符串的长度,DS:0001用来存储输入字符串的真实长度,即CL用来存储字符串的长度。从DS:0002开始才用来存储输入的字符串,所以SI用来存储输入字符串首字符的地址。DI存储的是提示正确信息字符串的首字符的地址。JNZ(或JNE)(jump if not zero, or not equal),汇编语言中原创 2020-10-29 11:44:58 · 243 阅读 · 0 评论 -
微机原理 反汇编实例01、02
实例2 secret01.exe第一个字符的ASCII码减一等于58,故该字符的ASCII码是59,该字符是Y;第二个字符的ASCII码加一等于50,故该字符的ASCII码是4F,该字符是O;第三个字符的ASCII码加一等于56,故该字符的ASCII码是55,该字符是U。截图如下:实例3 secret02.exe或运算:有1则1,全0才0与运算:有0则0,全1才1第一个字符:在将其ASCII码减一,跟07做与运算,跟30做或运算之后,它的值跟36相等,即为00110110。于是倒回去,原创 2020-10-28 23:36:34 · 242 阅读 · 0 评论 -
微机原理 反汇编实例0
实例1 secret0.exe原创 2020-10-28 21:40:07 · 265 阅读 · 0 评论 -
微机原理 伪指令实例解析(3)
伪指令实例3用寄存器间接寻址的方法可以对数组进行很方便的存取操作。如例3,将字符数组的地址变量赋值给bx,只要增加bx的值的大小就可以顺序取出相应地址里存放的字符,再将bx所指向的地址里的值赋值给另外一个寄存器cx,再对cx中存放的值进行大小比较,判断该字符是否属于数字,进而确定是否对其进行简单地加密。;eg3.将字符串string中非数字的所有字符加密。assume cs:code,ds:datadata segment string db '123Hello!'data endscode原创 2020-10-22 21:21:07 · 618 阅读 · 0 评论 -
微机原理 伪指令实例解析(2)
伪指令实例2;eg2.找出字符串string中ASC码最大的字符。assume cs:code,ds:datadata segment string db '123Hello!'data endscode segmentstart: mov ax,data mov ds,ax mov bx,offset string mov cl,[bx] ;给cl赋初值;用cl存储字符串中ASC码最大的字符的ASCII码的16进制数据 x1: cmp cl,[bx] ;将cl与后原创 2020-10-22 19:47:51 · 499 阅读 · 0 评论 -
微机原理 伪指令实例解析(1)
伪指令实例解析1伪指令(pseudo instruction)是用于对汇编过程进行控制的指令,是在编译阶段发挥作用的,由汇编器(MASM、TASM等)来解释。指令:是在执行阶段发挥作用的,由CPU执行。1个8086CPU的寄存器均是16位的,而数据类型有以下两种:1 Byte = 8bit 1字节1 word = 2 Byte = 16 bit 1个字;eg1.将字符串string中的所有数字加密。assume cs:code,ds:datadata segment string db原创 2020-10-21 23:06:39 · 1497 阅读 · 0 评论