博文

目前显示的是 2007的博文

A780自动关机的原因分析及解决方法

最近我的A780经常出现隔个几小时就自动关机现象. 上网查了一些资料, 总结如下: 1. 手机有自动关机设置, 但一般只在固定时刻, 这个一般是由疏忽引起的; (可能性: 最低) 2. 软件原因: 由于版本过低造成的, 可以去刷机; (可能性: 很低) 3. 电池原因: 你的电池使用的时间很长了,该换一块了.(可能性: 普通) 4. 内存原因: 看看你的短信数量, MP3歌曲数量, 或者你自己装的程序,主题. (可能性: 很高) 5. 翻盖原因: 翻盖手机的通病, 不说了, 送客服吧(可能性:最高) 我所说的可能性是基于硬件质量过硬的情况下分析的. 我自己的手机出现的问题是由内存原因造成的.当时我的短信数量已经达到600条了(发件箱和收件箱总和). 另: 如果都测试了还是出现故障, 那么当你的手机关机后, 不要动了, 拿着它去客服检测一下吧!

操作系统开发小试-保护模式引导程序

+------------------------------------------------+ 操作系统开发小试-保护模式引导程序 +------------------------------------------------+ + +1.开发语言:ASM(工具:NASM) +2.虚拟环境:Virtual PC +3.应用工具:WinHex Ver11.2 ====================================================== %include "pm.inc" ;%define _BOOT_DEBUG_ %ifdef _BOOT_DEBUG_ org 00100h %else org 07c00h %endif jmp begin_boot ; 跳过其它的数据,跳转到引导程序的开始处 print_mesg: ; 打印信息调用 mov ah, 0x13 ; 使用中断10h的功能13,在屏幕上写一个字符串 mov al, 0x00 ; 决定调用函数后光标所处的位置 mov bx, 0x0007 ; 设置显示属性 mov cx, 0x20 ; 在此字符串长度为32 mov dx, 0x0000 ; 光标的起始行和列 int 0x10 ret get_key: ;等待按键 mov ah, 0x00 int 0x16 ; Get_key使用中断16h的功能0,读取下一个字符 ret clrscr: ; 清屏 mov ax, 0x0600 ; 使用中断10h的功能6,实现卷屏,如果al=0则清屏 mov cx, 0x0000 ; 清屏 mov dx, 0x174f ; 卷屏至23,79 mov bh, 0 ; 使用颜色0来填充 int 0x10 ret bits 16 ;gdt LABEL_DESC_NULL: Descriptor 0, 0, 0 LABEL_DESC_CODE32: Descriptor 0, SegCode32Len-1, DA_C + DA_32 LABEL_DESC_VIDEO: Descriptor 0B8000h, 0ffffh, DA_DRW gdtr dw $ - LABEL_DESC_NULL dd LABEL_DESC_NULL Se...

操作系统开发小试-实模式引导程序

+-----------------------------------------------+ 操作系统开发小试-实模式引导程序 +-----------------------------------------------+ + +1.开发语言:ASM(工具:NASM) +2.虚拟环境:Virtual PC +3.应用工具:WinHex Ver11.2 ====================================================== org 0x07c00 这条语句将该引导程序装入绝对地址0x7c00处.该引导程序被编译后有512字节,被加载到磁盘的第1扇区中(引导扇区).当PC启动的时候被BIOS加载到地址0x7c00处. mov ax, cs mov ds, ax mov es, ax 这三条语句是初始化段寄存器的:当系统加载引导程序的时候就把程序的装入地址0x7c00放入代码段寄存器cs中.ds,es保存数据段段地址,如果不使用的话,程序就会找不到要显示的字符串(当进行串操作时,段地址是保存在es中). jmp short beginroot 跳转到标签beginroot处,并从那里开始执行程序代码. bootmsg db ""START YYOS......"" ;16bytes(0x10) 定义了一个字符串,当程序运行后在屏幕显示该友好字符串. cls: mov ax, 0x0600 ;ah=06表示使用INT10的功能6,al=0表示清屏 mov bh, 0 ;bh=0表示使用第0页 mov cx, 0 ;cx=0表示屏幕的左上角 mov dx, 0x174f ;dx=0表示屏幕的右下角 int 0x10 ;调用中断 ret ;函数返回 该块类似一个函数性质,它的作用就是清除屏幕.它调用的是BIOS中断INT10,关于BIOS中断的详细内容我会写一篇详细的文档,请等待. print: mov ax, 0x1300 ;ah=0x13表示使用INT10的功能0x13,al=0表示清屏 mov bx, 0x0002 ;bh=0表示使用第0页,bl=2表示字符串的颜色为绿色 mov cx, 0x10 ;cx=10表示显示字符串的长度 mov dx,...

BIOS中断INT10H的功能13H

显示字符串(仅用于PC/AT). 入口参数: AH = 13H (代表中断功能标号) AL = 01H (代表显示输出模式) 0——字符串中只含显示字符,其显示属性在BL中。显示后,光标位置不变 1——字符串中只含显示字符,其显示属性在BL中。显示后,光标位置改变 2——字符串中含显示字符和显示属性。显示后,光标位置不变 3——字符串中含显示字符和显示属性。显示后,光标位置改变 BH = 页码,默认为00H BL = 字体和背景颜色(若AL=00H或01H) (DH、DL) = 坐标(行、列) CX = 显示字符串长度 ES:BP = 显示字符串的地址 出口参数: 无 例子: BootMessage db "Hello, OS" mov ax, BootMessage mov bp, ax mov cx, 16 mov ax, 01301H mov bx, 000CH(黑底红字.高亮) mov dl, 00H int 10H 注: IBM PC AT是美国国际商用机器公司(IBM)于1984年发布的个人电脑产品,正式名称是IBM 5170 PC AT。AT是英文“Advanced Technology)的缩写,这是由于它引入了标准的16位ISA总线以及采用了当时最新的英特尔80286处理器。PC/AT是IBM公司自PC机发布后的第二代升级产品(也有人认为在此之前发布的PC/XT是第二代产品)。尽管早期的产品存在着磁盘存储部件相关的瑕疵,它最终还是迅速流行于商用及普通用户市场,成为了PC工业最持久的事实标准。至今,由于软件兼容性的原因,最新的PC系统都还支持PC/AT机的总线结构。

如何屏蔽窗体的"关闭按钮"?

最近写程序有个需求, 就是要屏蔽掉"关闭按钮". 通过Delphi的图形编辑很难实现这个要求. 我们不得不借助于API函数的帮助. 标题栏的右侧3个按钮,是和系统菜单(右键点击标题栏左侧图标弹出)相关联的.我们不可能将"关闭按钮"隐藏掉,只能禁用它. 其实当你将系统菜单中的"关闭"菜单删除掉, 你就会发现那个"关闭按钮"已经给禁用了. 好了,原理已经说了, 我们看看如何实现吧! 很简单! var hMenu : HMENU; begin hMenu := GetSystemMenu(Handle, False); RemoveMenu(hMenu, SC_CLOSE, MF_BYCOMMAND); end; 下面我们就看看两个API函数的作用. 正如他们的命名, 意思很直接. 1. 获取系统菜单 function GetSystemMenu(hWnd: HWND; bRevert: LoogBool): HMENU; 参数: hWnd -- 窗体的句柄; bRevert -- 制定一种操作. 如果为False, 函数返回当前窗体的系统菜单句柄; 如果为True, 函数将重置系统菜单回默认状态. 返回值: 如果bRevert为False,返回系统菜单句柄; 如果bRevert为True, 返回nil. 2. 移除一个菜单项 function RemoveMenu(hMenu: HMENU; uPosition: Cardinal; uFlags: Cardinal): LoogBool; 参数: hMenu -- 菜单句柄; uPosition -- 要删除菜单项的ID, 或者该菜单项位于菜单的位置, 具体意思根据uFlags决定; uFlags -- 决定上一个参数含义的参数,可以是MF_BYCOMMAND或者MF_BYPOSITION; 附加项: uPosition参数关于系统菜单操作可以有如下几种: SC_CLOSE SC_SIZE SC_MOVE SC_MINIMIZE SC_MAXINIZE

如何获得WORD类型的两个字节的内容

var WD : Word; begin WD := $1234; ShowMessage(Format('%d, %d', [WordRec(WD).Hi, WordRec(WD).Lo])); end; 输出: 18,52 ----------------------------------------------------------------------------------- 关于WordRec的定义如下(在SysUtils单元文件中定义): WordRec = packed record case Integer of 0: (Lo, Hi: Byte); 1: (Bytes: array [0..1] of Byte); end; 可以看到通过类型转换,我们就可以很方便的利用它.很显然,这是利用了指针的方便. 当然不使用系统提供的record,我们也可以自己定义,仿照系统的例子,我定义勒如下的结构: TWord = packed record Lo: byte; Hi: byte; end; 看清楚了,的确是Lo在前面,而Hi在后面。这是形如$1234的整数在内存的排列是3412这个样子的.