用汇编编写屏幕保护程序

【汇编】用户登录验证程序 程序执行后,给出操作提示,请用户输入用户名和密码;用户在输入密码时,程序不回显输入字符;只有当用户输入的用户名、密码字符串和程序内定的字符串相同时,才显示欢迎界面,并返回DOS。界面的颜色自定(彩色或黑白) 实验代码: ;FILENAME: EXA131.ASM .486 NEWLINE MACRO ;换行;宏指令 MACRO...ENDM ... 阅读详情

用汇编编写屏幕保护程序 
作者:罗云彬·发布日期:2000-8-8·阅读次数:12107
 

--------------------------------------------------------------------------------
   屏幕保护程序是什么,相信大家都用过,但对于它的结构也许就不那么熟悉了。屏幕保护程序是一种特使的 .exe 文件,实际上它是一个标准的 PE 文件,除了有扩展名 .scr,当然这个扩展名也是用连接程序产生的 .exe 文件改名得到的。但在编程中,屏幕保护程序又有它的特殊的地方,说穿了就是它的编程规范。

   屏幕保护程序有以下特点:

1.屏幕保护程序是Win32 API 支持一种特殊的应用程序并由系统自动激活。其机制是当条件满足时,系统向当前活动窗口发出字参数 wParam 值为 SC_SCREENSAVE 的 WM_SYSCOMMAND 消息,然后由当前活动窗口执行 SYSTEM.INI 文件中 [boot] 区指定的屏幕保护程序。
2.屏幕保护程序激活的条件是:在规定时间内没有鼠标或键盘输入、当前的活动窗口是标准的 WINDOWS 应用程序。因为非 WINDOWS 应用,不会理睬 WM_SYSCOMMAND 消息。显然,如果当前活动的程序接管了字参数 wParam 值为 SC_SCREENSAVE 的 WM_SYSCOMMAND 消息并且不传递到 DefWindowProc 函数就可以禁止屏幕保护程序。这对某些运行中不愿意被打断的程序如视频播放,光盘刻录程序特别有用。
3.可以在控制面板的显示器中选择需要的屏幕保护程序,并可以配置屏幕保护程序的参数。配置的对话框由屏幕保护程序提供。

   下面是编写屏幕保护程序的要点:

   屏幕保护程序的编写由静态链接库 SCRNSAVE.LIB 支持,它包含了建立屏幕保护程序的主程序和缺省功能,如建立一个缺省的大小为全屏幕的窗口供用户使用,并提供缺省的消息处理程序,它对下面消息的缺省处理是:

WM_SETCURSOR -- 将光标设置为无
WM_PAINT -- 画屏幕背景
WM_LBUTTONDOWN、WM_MBUTTONDOWN、WM_RBUTTONDOWN、WM_KEYDOWN、WM_MOUSEMOVE -- 终止执行
WM_ACTIVATE -- 如果 wParam 是 FALSE,则终止执行


   程序的入口代码已经包括在 scrnsave.lib 中,名称为 WinMain,所以程序尾包括 end WinMain 即可。
   用户只需编写三个基本函数必须名为 ScreenSaverConfigureDialog、ScreenSaverProc 和 RegisterDialogClasses,这 3 个函数必须在.DEF 文件中指定 export

1.ScreenSaverProc - 主过程,也就是自动建立的主窗口的窗口过程,所有对屏幕的处理就是由它完成的。可以把未处理的消息传递到 DefScreenSaverProc函数,由系统处理上面说到的缺省处理。缺省 DefScreenSaverProc 过程处理 WM_LBUTTONDOWN、WM_MBUTTONDOWN ; WM_RBUTTONDOWN、WM_KEYDOWN、WM_MOUSEMOVE 消息并结束程序,如果在这些消息时不想退出,可以自行处理,不要传递到 DefScreenSaverProc。

2.ScreenSaverConfigureDialog - 处理屏幕保护程序配置对话框过程,这个过程并不是由主程序调用的,而是由控制面板的显示器设置程序调用。用户输入的配置数据应该输出到.INI 或注册表中。

3.RegisterDialogClasses - 登记屏幕保护程序配置对话框的窗口类,如果使用标准的对话框,可以简单地返回 TRUE。


   在 ScreenSaverProc 窗口过程中,有个专用消息 WM_ERASEBKGND -- 可以在这时擦除背景,如果把这个消息传到 DefScreenSaverProc,会得到一个全黑的背景。

   使用时必须将编译完成的 .exe 文件改名为 .scr 文件,然后拷贝到 Windows 或 Windows/System 目录下。
   为使控制面板能够识别,屏幕保护程序的图标(ICON)在资源文件中必须定义为 100,资源文件中必须包含一描述字符串。该字符串用于控制面板显示屏幕保护程序的名字。它必须位于字符串表的首位,ID 为 100。资源文件中屏幕保护程序配置对话框的 ID 必须为2003。
   综上所述,屏幕保护程序的两个部分即窗口过程和设置对话框过程是在不同的地方被执行的,所以在编程中要注意不要在两个过程中传递变量,这就意味着屏幕保护程序的设置要被输出到 .ini 或注册表中保存,在窗口过程中的 WM_CREATE 消息中再读入,因为你无法把它保留在内存中。同样窗口过程和设置对话框过程中的变量或资源的初始化也要分别进行,比如说两者都要用到同一个图片,那就在自己的 WM_CREATE 消息中分别 LoadBitmap,总之要时刻认为你是在编写两个“独立的程序”。

   下面是一个屏幕保护程序的资源定义例子:

#include 

#define ICO_MAIN  100
#define DLG_SETUP  2003

ICO_MAIN ICON  "Resource/Main.ico"

DLG_SETUP DIALOG DISCARDABLE  0, 0, 300, 120
STYLE  DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION  "屏幕保护程序"
FONT  9, "宋体"
BEGIN
    ...
    ...
    DEFPUSHBUTTON   "确定(&O)",  IDOK,  240,10,50,14
    PUSHBUTTON      "取消(&C)",  IDCANCEL, 240,29,50,14
END

STRINGTABLE DISCARDABLE
BEGIN
 100 "保护程序"
END
.def 文件例子:

EXPORTS
ScreenSaverProc
ScreenSaverConfigureDialog
RegisterDialogClasses

源代码例子:

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Programmed by 罗云彬, bigluo@telekbird.com.cn
; Website: http://asm.yeah.net
; LuoYunBin's Win32 ASM page (罗云彬的编程乐园)
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 版本信息
; 屏幕保护程序模板
; Ver 1.0 - 2000.07.15
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  .386
  .model flat, stdcall
  option casemap :none   ; case sensitive

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 数据
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include  windows.inc
include  user32.inc
include  kernel32.inc
include  comctl32.inc
include  comdlg32.inc
include  gdi32.inc
include  advapi32.inc
include  shell32.inc
include  scrnsave.inc

includelib user32.lib
includelib kernel32.lib
includelib comctl32.lib
includelib comdlg32.lib
includelib gdi32.lib
includelib advapi32.lib
includelib shell32.lib
includelib scrnsave.lib
includelib msvcrt.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 数据
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN equ  100 ;Must be 100
DLG_SETUP equ  2003 ;Must be 2003

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  .data?

hInstance dd  ?
hWinMain dd  ?

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

  .code

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 设置对话框过程
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ScreenSaverConfigureDialog proc uses ebx edi esi, /
  hWnd:DWORD,wMsg:DWORD,wParam:DWORD,lParam:DWORD

  mov eax,wMsg
;********************************************************************
  .elseif eax == WM_CLOSE
   invoke EndDialog,hWnd,NULL
;********************************************************************
  .elseif eax == WM_COMMAND
   mov eax,wParam
   .if eax == IDOK
                ...                在此保存设置                ...
    invoke EndDialog,hWnd,NULL
   .elseif eax == IDCANCEL
    invoke EndDialog,hWnd,NULL
   .endif
  .else
   mov eax,FALSE
   ret
  .endif
  mov eax,TRUE
  ret

ScreenSaverConfigureDialog endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 主程序窗口过程
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ScreenSaverProc proc uses ebx edi esi, /
  hWnd:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD

  mov eax,uMsg
  .if eax == WM_CREATE
      invoke GetModuleHandle,NULL
   mov hInstance,eax
   mov eax,hWnd
   mov hWinMain,eax            ...
            在此初始化,包括定义一个定时器            ...
      invoke SetTimer,hWinMain,TIMER_MOON,100,NULL
  .elseif eax == WM_DESTROY
   call _Quit
;********************************************************************
  .elseif eax == WM_TIMER
            ...
            在此画屏幕动画            ...
   xor eax,eax
   ret
;********************************************************************
;  .elseif eax == WM_ERASEBKGND
;********************************************************************
; 以下黑屏的代码在 DefScreenSaverProc 中已经包括,如果自己要处理
; 屏幕,可以把它去掉。
;********************************************************************
;   invoke GetDC,hWnd
;   mov @hDc,eax
;   invoke GetClientRect,hWnd,addr @stRc
;   invoke GetStockObject,BLACK_BRUSH
;   invoke FillRect,@hDc,addr @stRc,eax
;   invoke ReleaseDC,hWnd,@hDc
;   xor eax,eax
;   ret
  .endif
;********************************************************************
  invoke DefScreenSaverProc,hWnd,uMsg,wParam,lParam
  ret

ScreenSaverProc endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 注册设置对话框窗口Class过程
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
RegisterDialogClasses proc uses ebx edi esi, hInst:DWORD

  mov eax,TRUE
  ret

RegisterDialogClasses endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  end WinMain


   以上是一个屏幕保护程序的框架结构,其实编写一个屏幕保护程序的大部分工作量在于 WM_TIMER 消息的处理,也就是说对动画的处理,如果就把上面的程序编译,那么你就会得到一个最简单的“黑屏”屏保。 

C#屏幕保护程序设计实践指南 本文还有配套的精品资源,点击获取 简介:本指南探讨了使用C#编程语言开发屏幕保护程序的各个关键环节。首先介绍了C#编程语言的基础知识,然后深入讲解了Windows Forms应用开发、屏幕信息获取、定时器使用、应用程序生命周期管理、图形设计与动画制作,以及屏幕保护程序的安装配置和事件处理等内容。通过本指南,开发者可以学会如何设计并实现一个适应多种屏幕尺寸、具有动画效果,并能... 阅读详情

相关推荐

用汇编语言编写的屏保程序

文档里有一个简单的屏保程序,可直接在dos下运行,是我小学期做得。

C# 屏幕保护程序制作

(1)创建新项目 建好长这样,VS2022是这样,其他版本应该差距不大 如果右下角没有属性栏,右键Form1,属性就会出来 (2)先对窗口做一下预处理,屏保肯定是没有边框的,所以要去掉它的边框样式 选择外观下的FormorderStyle,属性设置为None; 效果 (3)设置大小最大化,你总不能让他只保护你的一半吧,你的另一半难道不重要吗? 代码后面会说 (4)打开工具栏,我们双击或者把它拉到form1上添加一个Label1 (5)在la...

yuwoxinanA3的博客 5180

汇编语言写的DOS界面下的屏幕保护程序

汇编语言写的DOS界面下的屏幕保护程序,如果5秒种没有键盘输入就自动进入屏保,按任意键退出屏保

屏幕保护程序的编写

对于屏幕保护程序,大家应该不会陌生。屏幕保护程序的后缀名是.scr,其实它就是一个可执行的.exe文件。  VC提供了一个支持屏幕保护的开发库scrnsave.lib,这个库已经定制了一个屏幕保护程序的框架结构,开发者只需要在完成相应的函数和提供相应的资源就可以写出自己的屏幕保护程序。  讲到这里,我想你对屏幕保护程序到底是什么东东应该有了一个比较清楚的认识了吧!  在VC中,要完成一个屏幕保护程...

weixin_34007879的博客 492

ESD放电模式以及电源箝位 (power clamp )电路

由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工作将输出端Vout电压上拉到高电位。从而Vg端的高电位触发导通了NMOS元件(Mesd)的晶体管,因而ESD电流便经由Mesd而泄放掉。由于晶体管Mesd的栅极导通

DOG_BITE_DOG的博客 2万+

保姆级教程:在STM32H750VBT6上跑起来CMSIS-DSP库(基于CubeMX+Keil)

本文详细介绍了在STM32H750VBT6微控制器上配置和运行CMSIS-DSP库的全过程,包括开发环境搭建、CubeMX工程配置、Keil工程设置以及DSP库的实际应用示例。通过FFT频谱分析和音频均衡器等实战案例,展示了如何利用STM32H750VBT6的硬件FPU加速DSP运算,提升实时信号处理性能。

weixin_30236595的博客 458

[转]用汇编编写屏幕保护程序

  屏幕保护程序是什么,相信大家都用过,但对于它的结构也许就不那么熟悉了。屏幕保护程序是一种特使的 .exe 文件,实际上它是一个标准的 PE 文件,除了有扩展名 .scr,当然这个扩展名也是用连接程序产生的 .exe 文件改名得到的。但在编程中,屏幕保护程序又有它的特殊的地方,说穿了就是它的编程规范。屏幕保护程序有以下特点:屏幕保护程序是Win32 API 支持一种特殊的应用程序并由系统自动激活

hoverlees的专栏 749

手把手教你排查Abaqus中的Johnson-Cook损伤参数:避免因d3正负号导致的仿真失败

本文详细解析了Abaqus中Johnson-Cook损伤参数d3正负号设置的关键问题,帮助用户避免因参数错误导致的仿真失败和Excessive distortion报错。通过对比不同文献定义、提供实操指南和典型错误排查流程,有效提升非线性分析的准确性和效率。

weixin_33960567的博客 355

汇编语言全接触-73.用汇编编写屏幕保护程序

在 Dos 汇编中,psp 段的 0080H 开始的位置就是命令行参数,在 Win32汇编中,我们获得命令行参数的方法是使用 Api - GetCommandLine,它没有输入参数,返回的是指向命令行的指针,返回的字符串中,包含执行文件的文件名。szCaption db '命令行参数测试',0。

qq_41237850的博客 457

【深度学习驱动流体力学】完整配置安装 OpenFOAM 及其所需的ThirdParty与QT5工具

针对以上文件及文件目录介绍其功能特性:Allclean:这是一个脚本或命令,通常用于清理(即删除)所有编译生成的临时文件和目标文件。执行后,可以将编译过程中生成的中间文件和已编译的程序删除,以便重新开始编译或者清理空间。Allwmake:这是一个脚本或命令,用于编译并安装ThirdParty-10目录中的所有软件包。执行此命令会遍历所有子目录,编译其中的软件包并将它们安装到指定位置。这是一个脚本或命令,用于编译和安装Libccmio库。

源代码杀手的博客 1997

Allegro 中复制一部分PCB到另一个PCB中去

引言:自从学了allegro后,我每天快乐地再拉线,一开心肯定出事情。不料今天一高兴,把本来在5层的铜皮直接在4层画起来了。不过,幸好我知道换层,才省了又要画铜皮的时间。好了,开干,如果要将其他层的铜皮换到想要换到的层上,就需要这个命令。

tianpu2320959696的博客 969

80x86汇编屏保程序_旋转五星

;  80x86汇编屏保程序_旋转五星   CODE  SEGMENT    ASSUME    CS:CODE,DS:CODE  .386P  org 100h   START:    PUSH      CS    POP       DS    push cs    pop es    cld    MOV       DI,1000H    MOV       CX,360 @cs

dididu1515的专栏 6555

multisim14.3无法访问数据库...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 4464

实验10 编写子程序

本文介绍了基于王爽《汇编语言》的实验内容,包含三个子程序实现: 字符串显示子程序show_str:在指定屏幕位置(8行3列)显示黑底绿字字符串"Welcome to masm!",通过计算显存偏移地址实现定位。 32位除法子程序divdw:实现了1000000÷10的运算,采用分段除法策略避免溢出,结果正确返回商100000和余数0。 数字转字符串子程序dtoc:将12666转换为ASCII字符串并显示,通过除10取余法获取各位数字,存入显存后呈现为绿色文本。 实验完整代码已开源至码云,

2503_91038749的博客 995

华为OD机试真题 新系统 2026-04-19 C语言 实现【8位LED控制器】

有一个8位LED控制器,包含8个LED灯(编号0-7),初始状态全灭,用8位二进制表示为:00000000。控制器可以接收以下三种指令: Lx:L表示点亮操作,x表示LED的编号(0一7),操作得到的结果是:点亮第x个LED灯,把状态设为1。 Dx:D表示熄灭操作,x表示LED的编号(0-7),操作得到的结果是:熄灭第x个LED灯,把状态设为0。 Tx:T表示切换操作,x表示LED的编号(0-7),操作得到的结果是:切换第x个LED灯的状态,若状态为0则变为1,为1则变为0。 现在给定一组指令字符串(0<

MISAYAONE的博客 148

基于matlab的阈值分割的车牌定位识别系统

车牌自动识别模块是现代社会智能交通系统(ITS)的重要组成部分,是图像处理和模式识别技术研究的热点,具有非常广泛的应用。车牌识别主要包括以下三个主要步骤:车牌区域定位、车牌字符分割、车牌字符识别。本案例通过对采集的车牌图像进行灰度变换、边缘检测、腐蚀及平滑等过程进行车牌图像预处理,并由此得到一种基于车牌颜色纹理特征的车牌定位方法,最终实现了车牌区域定位。车牌字符分割是为了方便后续对车牌字符进行匹配,从而对车牌进行识别。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 969

80x86汇编屏保程序

80x86汇编屏保程序运行效果:    显示旋转的三角形,并间隔清屏。          将虚线内代码,用记事本以ANSI格式,保存为sjx.bat,双击运行,按 Esc 程序退出。-----------------------------------------------------goto sjxE100  0E 1F 0E 07 FC BF 00 10 B9 68 01 FF 06

dididu1515的专栏 624

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

怎么用C语言讲小程序复制到开机启动文件夹,另存于本文件夹自己动手编写一个简单的操作系统(编写操作系统开始是对BIOS控制取出存储在ROM里的程序 完成以后BIOS就会选择一个启动设备并读取该设备的第一...

有人可能担心自己既没有学过计算机原理,也没有学过操作系统原理,更不懂汇编语言,对C语言也一知半解,能写操作系统吗?答案是没问题。我将带大家一步一步完成自己的操作系统。当然如果学一学上述内容再好不过。首先要明确处理器(也就是CPU)控制着计算机。对PC而言,启动的时候,CPU都处在实模式状态,相当于只是一个Intel 8086处理器。也就是说,即使你现在拥有一个奔腾处理器,它的功能也只能是8086级...

weixin_30673943的博客 326

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

2年修完6个清华CS硕士学位第3周反思报告

郑重计划通告: 故事终传奇故事终传奇故事终传奇故事终传奇故事终传奇故事终传奇故事终传奇 七天学完北大离散数学课程:第一天1. 计划概览2. 今日学习成果3. 今日时间表3. 今日反思3. 明日学习目标5. 相关资料5.1. 起床打卡图片5.2. 今日时间统计5.3. 每日学习总结视频-B站链接5.4. 每日思维导图内容截图5.5 ==每日评分依据截图==七天学完北大离散数学课程:第一天) 1. 计...

彪悍的人生不需要解释! 843

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

告别GRUB!gh_mirrors/os/os-tutorial-cn教程:从零编写启动代码,打造属于你的迷你操作系统

你是否曾经好奇计算机启动时究竟发生了什么?想要摆脱GRUB等现成引导程序的束缚,亲手打造一个从开机到运行的完整流程?gh_mirrors/os/os-tutorial-cn项目提供了从零开始编写操作系统的中文教程,让你通过实践掌握操作系统的核心原理,从零编写启动代码,打造属于自己的迷你操作系统。 ## 🚀 为什么要学习从零编写操作系统? 学习操作系统开发不仅能深入理解计算机底层工作原理,还能

gitblog_00647的博客 234

动手写一个现代化的操作系统

操作系统 前言 本篇博客是基于彭东的操作系统实战45讲的内容做的学习笔记,目的在于总结和排坑 专栏链接:https://time.geekbang.org/column/intro/411 环境是运行在VM上的Ubuntu20 一.程序的运行过程:从代码到机器运行 #include "stdio.h" int main(int argc, char const *argv[]) { printf("Hello World!\n"); return 0; } 这段代码是每个学习C语言人的第一行代

Destiny_159的博客 2739

Win32屏幕保护程序

一、简介 屏幕保护程序(Screen Saver)的历史几乎与视窗操作系统的历史一样悠久,设计它的目的是为了保护CRT显示器使其的使用寿命更长。但随着技术的进步,新型的CRT显示器及液晶显示器已经无须这样做了,不过屏幕保护程序并未消失,因为其绚丽的画面成了人们彰显个性的方式 屏幕保护程序虽然变化多端,但对开发者而言,它仍然是一种Windows应用程序,屏幕保护程序的扩展文件名是scr,在文件格...

IT嫩小白 1385

windows32位汇编编写的屏幕锁定程序

<br />     用32位汇编写的屏幕锁定程序,运行时全屏变黑,无法使用鼠标或者其他系统热键弹出,只有使用密码ctrl+A,而本程序没有使用钩子技术,运行时不会太占系统资源,代码如下:<br />;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><br /> ; Sample code for < Win32ASM Programming 2nd Edition><br /> ; 带锁屏的屏幕保护程序  by C

cgaa1的专栏 903

在Linux下运行你的第一个汇编程序

在Linux下运行你的第一个汇编程序 汇编语言对于大多数程序员来说都是进而远之的,原因当然是汇编语言晦涩难懂,各种指令搞得人头疼,不过汇编语言适当了解一些还是蛮有意思的,今天带大家在Linux上运行第一个汇编程序! 在 Linux 操作系统中,你有很多办法可以实现在屏幕上显示一个字符串,但最简洁的方式是使用 Linux 内核提供的系统调用。使用这种方法最大的好处是可以直接和操作系统的内核进行通讯,...

冷色调的夏天的博客 2万+

汇编语言编写的Hello World

Linux 下用汇编语言编写的代码具有两种不同的形式。第一种是完全的汇编代码,指的是整个程序全部用汇编语言编写。尽管是完全的汇编代码,Linux 平台下的汇编工具也吸收了 C 语言的长处,使得程序员可以使用 #include、#ifdef 等预处理指令,并能够通过宏定义来简化代码。第二种是内嵌的汇编代码,指的是可以嵌入到C语言程序中的汇编代码片段。虽然 ANSI 的 C 语言标准中没有关于内嵌汇编代

后花园 2万+

汇编语言实验7:子程序结构设计

汇编语言实验:子程序结构题目设计 >1. 利用递归的方法求N的阶乘。 >2. 十进制到十六进制的转换程序:从键盘输入一个十进制数,然后把该数以十六进制的形式显示在屏幕上。 >3. 调用子程序进行数组求和(不考虑溢出情况),其数组元素和结果均为字型数据。

Aslixzhou 6114
上一篇: 德意上演经典大站
下一篇: 用汇编写个最小的WDM驱动程序进RING0
Simbao
博客等级 码龄24年 13粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值