两段代码显示的不同之处是什么呀?

BAO BAO 2015-08-21 09:41:32
下面两段代码是系统引导的代码,第一段在屏幕左上角 显示www.baidu.com但后面有个下划线光标在闪动。
第二段是在屏幕中间 显示www.baidu.com 字符串后面不显示闪动的光标,好像隐藏了

我想知道 怎么来控制那个光标的显示, 怎么修改第一段代码 让它也不显示最后面的光标?

 	org	07c00h			
mov ax, cs
mov ds, ax
mov es, ax
call DispStr
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax
mov cx, 13
mov ax, 01301h
mov bx, 000ch
mov dl, 0e1dh
int 10h
ret
BootMessage: db "www.baidu.com"



org 7c00h
mov ax, 12h
int 10h
mov bp, msg
mov cx, 13 ; 字符串有多长,写多长
mov ax, 1301h; 功能号
mov bx, 0ch ; 页码,颜色,自己查BIOS手册
mov dx, 0e1dh ; 行号,列号
int 10h
jmp $
msg: db "www.baidu.com" ;
...全文
182 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
BAO BAO 2015-08-22
  • 打赏
  • 举报
回复
引用 3 楼 纵横车的回复:
引用 2 楼 wqte45 的回复:
你不是也学汇编了吗? 我发布的时候 没找到汇编模块
有的,在“其他语言”或者“硬件”里面,到底这年头汇编没什么人用了。
恩,你能再看看 结贴的那个代码吗?那个你写的 函数行参nflag 怎么样能移到函数内啊,在函数内定义个变量 来判断 不行啊 。你写到递归函数行参里了 即使一开始是 0 发现键值2递归一次 行参就变成1了 ,把行参去掉 想全部在函数体内 做标记 怎么实现啊
纵横车 2015-08-22
  • 打赏
  • 举报
回复
这个没办法,若要删除“2”,那么也要删除“2”的子项,“2”的子项的名字属性都不定,只能有调用时传一个参数告诉他他是“2”的子项,应该要删除。
BAO BAO 2015-08-22
  • 打赏
  • 举报
回复
#include<windows.h>
#include<stdio.h>

//nFlag 0:Enum, 1:Delete,
BOOL QueryKey(HKEY RootKey, TCHAR *pSubKey, BOOL nFlag)
{ 
    HKEY hKey;
    TCHAR lpName[255];             // buffer for subkey name
    DWORD lpcSubKeys=0, cbName;    // number of subkeys ,size of name string
    BOOL  flag = TRUE;
    if(RegOpenKeyEx(RootKey,pSubKey,0,KEY_READ,&hKey)) flag = FALSE;
    if(RegQueryInfoKey(hKey,NULL,NULL,NULL,&lpcSubKeys,NULL,NULL,NULL,NULL,NULL,NULL,NULL)) flag = FALSE;  
    for (int dwIndex=lpcSubKeys-1; dwIndex >= 0; dwIndex--)
    {     
        cbName = 255;
        RegEnumKeyEx(hKey, dwIndex, lpName, &cbName, NULL, NULL, NULL, NULL);       
		if(!strcmp(lpName,"2") || nFlag==1) QueryKey(hKey,lpName,1);
		else QueryKey(hKey,lpName,0);       
    }
	if(nFlag) RegDeleteKey(RootKey, pSubKey);
    RegCloseKey(hKey);
    return flag;
}
 
int main(void)
{
	QueryKey(HKEY_CURRENT_USER,"\\Software\\1",0);  
}
我想改成类似 当然下面的运行结果不对
#include<windows.h>
#include<stdio.h>

//nFlag 0:Enum, 1:Delete,
BOOL QueryKey(HKEY RootKey, TCHAR *pSubKey, TCHAR *pDelKey)
{ 
    HKEY hKey;
    TCHAR lpName[255];             // buffer for subkey name
    DWORD lpcSubKeys=0, cbName;    // number of subkeys ,size of name string
    BOOL  flag = TRUE;
	BOOL  bIsOK= FALSE;
    if(RegOpenKeyEx(RootKey,pSubKey,0,KEY_READ,&hKey)) flag = FALSE;
    if(RegQueryInfoKey(hKey,NULL,NULL,NULL,&lpcSubKeys,NULL,NULL,NULL,NULL,NULL,NULL,NULL)) flag = FALSE;  
    for (int dwIndex=lpcSubKeys-1; dwIndex >= 0; dwIndex--)
    {     
        cbName = 255;
        RegEnumKeyEx(hKey, dwIndex, lpName, &cbName, NULL, NULL, NULL, NULL);       
		if(!strcmp(lpName,pDelKey) || bIsOK) 
		{
			bIsOK = TRUE;
			QueryKey(hKey,lpName,pDelKey);
		}
		else QueryKey(hKey,lpName,pDelKey);       
    }
	if(bIsOK) RegDeleteKey(RootKey, pSubKey);
    RegCloseKey(hKey);
    return flag;
}
 
int main(void)
{
	QueryKey(HKEY_CURRENT_USER,"Software\\1","2");  
}
纵横车 2015-08-21
  • 打赏
  • 举报
回复
引用 2 楼 wqte45 的回复:
你不是也学汇编了吗? 我发布的时候 没找到汇编模块
有的,在“其他语言”或者“硬件”里面,到底这年头汇编没什么人用了。
BAO BAO 2015-08-21
  • 打赏
  • 举报
回复
你不是也学汇编了吗? 我发布的时候 没找到汇编模块
纵横车 2015-08-21
  • 打赏
  • 举报
回复
mov ax, 12h
int 10h
应该是这两句设置了显示模式的问题,另外,这个问题你应该去汇编板块发呀。

64,666

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧