火影忍者手游替身机制:【求助】汇编语言程序设计

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 18:29:26
题目一 键盘/磁盘中断替换实现磁盘读写保护
一、题目及要求
替换键盘中断INT 16H和磁盘中断INT 13H,实现磁盘读写加密
编写程序guard.exe来替换键盘中断INT 16H和磁盘中断INT 13H。
程序功能:
1.程序带有四个命令行参数read_disable_password、read_enable_password、write_disable_password、write_enable_password,用法为:

Guard read_disable_password read_enable_password write_disable_password write_enable_password

这4个password是用户自己设置的密码,分别用来禁止读磁盘,允许读磁盘,禁止写磁盘、允许写磁盘。
2.此程序是一个内存驻留程序,运行后,程序驻留内存,并取代原来的INT 16H和INT 13H中断处理程序
3.开始时,程序处于正常状态,允许磁盘读写,一旦程序识别出用户连续按下read_disable_password,则禁止读磁盘,直到在键盘上连续按下read_enable_password为止;同样的,一旦程序识别出用户连续按下write_disable_password,则禁止写磁盘,直到在键盘上连续按下write_enable_password为止。
键盘的功能要保持不变。

题目二 24位位图放大程序

一、题目及要求
编写一个位图变换程序convert,放大或缩小Windows平台下24BIT不压缩的彩色位图文件。
程序功能:
1.程序带有4个命令行参数,依次为输入文件名 输出文件名 变换比例因子1变换比例因子2。
convert 输入文件名 输出文件名 m n
convert为可执行程序,m和n为比例因子,位图放大到m/n倍。

二、相关知识

位图格式的图象使用点来记录文件信息,每个点被称为一个象素(pixels),无数个点组合在一起就形成了一幅图象。当你将位图放大时,如果放大一倍一个点就变成了四个点,这样就会出现通常所说的马塞克现象,使图象变得模糊和不清晰。
本程序采用最近邻点法和双线性插值法来校正放大后的位图像素点彩色值,消除马赛克效应。

算法如下:
假设原始位图为W*H大小,放大r倍,变换后的位图为Wr * Hr,对于变换后的位图中的每一个点(x, y),0<=x<Wr, 0<=y<Hr,还原到原始位图中的点为(x/r,y/r),设x/r取整为x0,y/r取整为y0,x1=x0+1,y1=y0+1,则(x/r,y/r)位于四个点围成的正方形中:
那么变换后位图(x,y)的灰度值v(x,y)由原始位图中四个点(x0,y0),(x1,y0),(x0,y1),(x1,y1)共同决定:

最近邻点法:v(x,y)=离(x/r,y/r)最近的那个点的灰度,优点是计算简单,缺点是变换后的位图灰度有明显的不连续性:

双线性插值法:设x/r-x0=xx y/r-y0=yy,则
v(x,y) = v(x0,y0) + (v(x1,y0) - v(x0,y0))*xx + (v(x0,y1) - v(x0,y0))*yy +
(v(x1,y1) + v(x0,y0) - v(x1,y0) - v(x0,y1))*xx*yy
此算法计算量稍大,但是克服了灰度不连续的缺点

4.计算器设计
一、题目及要求
题目:计算器程序
使用Win32编程设计一个功能及界面风格类似于Windows计算器的计算器程序,只要求实现标准型计算器。
主要实现的功能:
包含基本的四则运算、倒数运算、平方根运算。支持存储区的存储、清除、调出、累加等功能。
位图信息头包含图像本身的属性,大小为40个字节。结构如下
typedef struct tagBITMAPINFOHEADER {
DWORD biSize; // BITMAPINFOHEADER结构大小,固定为28H
LONG biWidth;// 位图宽度
LONG biHeight;// 位图高度
WORD biPlanes;// 位图位面,固定为01H
WORD biBitCount;// 每个像素位数,对于24BIT位图,为18H
DWORD biCompression; // 00H表示不压缩
DWORD biSizeImage; // 位图数据大小,此值加36H等于文件总长度
LONG biXPelsPerMeter; // 水平分辨率
LONG biYPelsPerMeter; // 垂直分辨率
DWORD biClrUsed; // 使用的颜色数,一般为00H,表示使用所有
DWORD biClrImportant; // 重要的颜色数,一般为00H,表示使用所有
} BITMAPINFOHEADER;
从第54字节开始是位图的颜色数据,对于24BIT位图,每个像素点有三个字节表示,依次为其B,G,R彩色分量。其排列方式为::像素点出现的顺序是从左下角开始从左到右,从下到上扫描,直到右上角的像素点,每个扫描行的字节如果不是4的倍数,则补齐到4的倍数
最后一题为win32程序
偶的作业,十万火急,恳请各位大虾帮忙 谢!!