本月博客排行
年度博客排行
-
第1名
宏天软件 -
第2名
龙儿筝 -
第3名
青否云后端云 - wallimn
- vipbooks
- gashero
- wy_19921005
- benladeng5225
- fantaxy025025
- zysnba
- e_e
- javashop
- sam123456gz
- tanling8334
- arpenker
- kaizi1992
- xpenxpen
- xiangjie88
- lemonhandsome
- ganxueyun
- xyuma
- sichunli_030
- wangchen.ily
- jh108020
- johnsmith9th
- Xeden
- zxq_2017
- jbosscn
- zhanjia
- forestqqqq
- luxurioust
- lzyfn123
- ajinn
- wjianwei666
- daizj
- ranbuijj
- 喧嚣求静
- silverend
- kingwell.leng
- lchb139128
- kristy_yy
- lich0079
- jveqi
- java-007
- sunj
- yeluowuhen
- ssydxa219
- lerf
- lstcyzj
- lxguy
操作系统专栏最新文章
汇编中通用寄存器的目的
1、EAX和AX:累加器,所有的I/O指令用它来与外部设备传送信息
2、EBX和BX:在计算存储单元地址时常用作基地址寄存器
3、ECX和CX:保存计数值
4、EDX和DX:做四字或二字运算时,可以把EDX(DX)和EAX(AX)组合在一起存放一个四字或二字长的数据,在对某些I/O操作时,DX可以放I/O的端口地址
5、ESP和SP:堆栈栈顶指针。
6、EBP和BP:基址寄存器
7、 ...
WIN32汇编语言解析
win32汇编中的sizeof
win32汇编中的sizeof不同于其它语言的sizeof ,这个是真正的sizeof,以字节为单位的。看下例szhello db 'hello,world!',0mov eax,sizeof szhelloeax=?答案是eax=13因为hello,world!为13个字节,然后0占一个,所以是13
变量命名风格
前缀 含义b bytew wo ...
设置与获取窗口标题文本
获得:
CString xx="";
CTestView::GetActiveWindow()->GetWindowText(xx);
MessageBox(xx,xx,MB_OK);
设置:
CString xxx="aaaa";
if(GetActiveWindow()==m_hWnd)SetWindowText(str);//CTes ...
保护模式下段寄存器的作用
1、保护模式一,虽然在寻址上没有分段的限制问题,但对要对一个地址空间定义一些安全上的属性,段寄存器就可以发挥作用,叫做段描述符
2、段描述符表保存了段落描述符,段寄存器中的16位用来做段描述表的索引信息
3、段描述表保存在两个特有的寄存器中
(1)GDTR寄存器,指向全局描述表(GDT),为系统中的所有任务共用的,通常是操作系统自己用的。指向内存地址
(2)LDTR寄存器,指向LDT,每个任 ...
二进制资源和自定义资源使用定义
1、二进制资源
(1)定义格式:
资源IDRCDATA [DISCARDABLE]
BEGIN
数据定义
END
(2)装入资源的例子(MASM32)
invokeFindResource,hInstance,ID_MYRES,RT_RCDATA ;寻找资源
.if eax
mov hres,eax;返回资源句柄
inv ...
LISTBOX和LIST CONTROL的项目增加方法
1、LIST CONTROL(report方式):
(1)类的方式
A.增加列
LVCOLUMN lv; lv. mask=LVCF_TEXT|LVCF_FMT|LVCF_WIDTH ; lv. fmt=LVCFMT_CENTER ; lv.cx=100; lv.pszText="编号"; lv.cchTextMax=sizeof(lv.pszText); lv.iSub ...
ret/retn人为改变执行地址
1、CALL和RET/RETN是一对指令,CALL把返回地址压入堆栈,RET/RETN把返回地址从堆栈取出,然后将IP寄存器改为该返回地址。
2、不使用CALL,而是人为地把地址放入堆栈即可实现。如:
push edi
retn
从edi处开始执行
3、加壳利用这个特点,在启动源文件文件前,将代码解密还原至原始位置
对程序的静态解码
mov si,offset word word_0_114;要解码的数量
lodsw;将数量移到ax
xchg ax,cx;将数量移到cx
push si;将解码起始地址保存
loc_0_10c:
xor byte prt[si],66h;解码
inc si;取一下需要解码的数据
loop loc_0_10c
jmp si;解码完毕,转到si
用WIN汇编开发桌面报时工具
用WIN汇编开发桌面报时工具
用WIN32汇编语言开发出来的WINDOWS程序具有执行效率高、占用空间小等特点。
一、 软件简介及相应开发工具
桌面报时工具主要完成以下两个功能:
1、 F12热键语音报时、语音整点报时。
2、 在屏幕中上方直接显示时间,并不被任何窗口挡住。
3、 程序运行后最小化为任务栏图标。
笔者以WIN汇编为开发语言,以MASM32为开发工具,因为它 ...
WINDOWS实现精确定时程序
一.原理及相关API
WINDOWS正确定时,不同的CPU频率可以指定同一时间间隔。
使用QueryPerformanceFrequency的API,指定每秒的频率。QueryPerformanceFrequencyFunction查询每秒的行为频率,这个频率在整个系统运行过程中不被改变。
The QueryPerformanceFrequency function retri ...
MFC对象与WIN32句柄的映射-TLS
1、没有办法把一个MFC某线程交到另一个线程,不能在线程间传递MFC对象指针,包括常用的MFC对象如CWND、CDC、CFONT等。
2、如果两个线程都调用CWND::GETDLGITEM()以取得对话框中的一个控件(如EDIT),则每个线程获得不同的指针,当对此指针的一个索求行为出现时,MFC产生出一些临时性对象,这些对象若被许多线程共享,MFC没有能力预期它们的生命。
3、这个限制是说,你不 ...
NET中EE垃圾回收原理
1、EE是执行引擎,EE拥有对象主要是两种途径:
1)NEW方式
2)静态变量
2、对象可能拥有其它对象,这是树图的开始,CLR以树图为基础进行搜索,记录对象的引用。程序拥有的所有静态变量或者栈上的所有变量为最初的树集。
3、垃圾收集模块决定要开始收集时,调用EE,请求停止所有线程,从而可以检查线程堆栈。
1)EE办理后,栈冻结,垃圾收集器通知EE开始遍历所有的栈和静态变量,然后返回最初的 ...