![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编
文章平均质量分 73
didihe1988
这个作者很懒,什么都没留下…
展开
-
汇编寄存器的使用,SI,DI的使用
转自: http://nannan408.iteye.com/blog/982942一、汇编语言中,为什么SI和DI不能同时使用汇编 其实你可以想一下,这两个寄存器的意思,SI源变址寄存器,DI目地变址寄存器,既然是变址寄存器,那么他们肯定是在某个地址的基础上进行偏移变化,由此我们就得出了需要基址寄存器。 你要是把这两个寄存器同时使用,那你地址变化的基址都没有,你该怎么变化呢?转载 2013-10-04 10:10:17 · 5610 阅读 · 0 评论 -
分页机制_改变地址映射关系
关键是页目录页表初始化 和PSwitch中的切换PageDirBase0 equ 200000hPageTblBase0 equ 201000hPageDirBase0 equ 210000hPageTblBase0 equ 211000hLinearAddrDemo equ 00401000原创 2013-10-07 11:05:08 · 992 阅读 · 0 评论 -
比较跳转指令
转自 百度空间 ilovetaibai的空间http://hi.baidu.com/txuqbajotfnstvr/item/c29770422d121ba4de2a9f5d几个比较跳转指令: je,jne, jb,jnb, ja,jna, jz jnz好接下来我给大家看下相关指令依据的标志位。转载 2013-10-07 02:06:41 · 1090 阅读 · 0 评论 -
c反汇编学习汇编
重新学习一下汇编。基友推荐的书《天书夜读-从汇编语言到Windows内核编程》不但push、pop、call、ret会操作堆栈,sub和add也可以用于操作堆栈。如果我要一次在堆栈中分配4个4字节长整形的空间,可以简单地把esp减去4*4=16即可。同样也可以用add指令来恢复它。这常常用于分配函数局部变量空间。void myfunction(int a,int b){原创 2013-10-09 15:52:52 · 1028 阅读 · 0 评论 -
巧妙的DispAL
DispAL: //主要就是一个2进制到16进制转换的过程push ecxpush edx mov edi, [dwDispPos]mov ah, 0Fh ; 0000b: 黑底 1111b: 白字 //这时eax的低8位al中存放的原来数据的高8位(31-24),所以可以给ah赋值mov dl, al原创 2013-10-06 02:37:06 · 1423 阅读 · 0 评论 -
寄存器 dd dw db
from 百度百科AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据。BH&BL=BX(base):基址寄存器,常用于地址索引CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.转载 2013-10-10 18:12:41 · 4112 阅读 · 0 评论