psp的澳洲木瓜膏主要用途途是啥?

PSP的工具用途是什么?
PSP的工具用途是什么?
09-03-30 &
游戏 看电影 听MP3 看电子书
请登录后再发表评论!
制作照片用的
请登录后再发表评论!
游戏 看电影 听MP3 看电子书
请登录后再发表评论!1421人阅读
操作系统(19)
程序段前缀是Dos下可执行程序载入内存后结构的一部分,位于前0100h部分,它的大致作用有:
(1) 子进程通过程序段前缀继承、恢复父进程的信息
(2 ) 使子进程正确地返回到父进程
( 3) 恢复中断23 H 和24H 的入口地址
(4) 给子进程提供Dos 的入口信息
更详细的信息请参考:
下面我们来验证一下PSP的作用:
(借用Orange's中的一个程序,在freedos中运行实验,以下程序如果看不懂,可以只看后面更改的部分)
; ==========================================
; pmtest2.asm
; 编译方法:nasm pmtest2.asm -
; ==========================================
%include &pm.inc& ; 常量, 宏, 以及一些说明
jmp LABEL_BEGIN
[SECTION .gdt]
段界限 , 属性
LABEL_GDT:
Descriptor
0, 0 空描述符
LABEL_DESC_NORMAL: Descriptor
0ffffh, DA_DRW Normal 描述符
LABEL_DESC_CODE32: Descriptor
0, SegCode32Len-1, DA_C+DA_32; 非一致代码段, 32
LABEL_DESC_CODE16: Descriptor
0ffffh, DA_C 非一致代码段, 16
LABEL_DESC_DATA:
Descriptor
DataLen-1, DA_DRW Data
LABEL_DESC_STACK:
Descriptor
TopOfStack, DA_DRWA+DA_32; Stack, 32 位
LABEL_DESC_TEST:
Descriptor 0500000h,
0ffffh, DA_DRW
LABEL_DESC_VIDEO:
Descriptor
0ffffh, DA_DRW 显存首地址
; GDT 结束
equ $ - LABEL_GDT ; GDT长度
dw GdtLen - 1 ; GDT界限
; GDT基地址
; GDT 选择子
SelectorNormal
equ LABEL_DESC_NORMAL - LABEL_GDT
SelectorCode32
equ LABEL_DESC_CODE32 - LABEL_GDT
SelectorCode16
equ LABEL_DESC_CODE16 - LABEL_GDT
SelectorData
equ LABEL_DESC_DATA
- LABEL_GDT
SelectorStack
equ LABEL_DESC_STACK - LABEL_GDT
SelectorTest
equ LABEL_DESC_TEST
- LABEL_GDT
SelectorVideo
equ LABEL_DESC_VIDEO - LABEL_GDT
; END of [SECTION .gdt]
[SECTION .data1]
LABEL_DATA:
SPValueInRealMode dw 0
PMMessage:
db &In Protect Mode now. ^-^&, 0 ; 在保护模式中显示
OffsetPMMessage
equ PMMessage - $$
db &ABCDEFGHIJKLMNOPQRSTUVWXYZ&, 0
OffsetStrTest
equ StrTest - $$
equ $ - LABEL_DATA
; END of [SECTION .data1]
; 全局堆栈段
[SECTION .gs]
LABEL_STACK:
times 512 db 0
TopOfStack equ $ - LABEL_STACK - 1
; END of [SECTION .gs]
[SECTION .s16]
LABEL_BEGIN:
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 0100h
mov [LABEL_GO_BACK_TO_REAL+3], ax
mov [SPValueInRealMode], sp
; 初始化 16 位代码段描述符
mov ax, cs
movzx eax, ax
shl eax, 4
add eax, LABEL_SEG_CODE16
mov word [LABEL_DESC_CODE16 + 2], ax
shr eax, 16
mov byte [LABEL_DESC_CODE16 + 4], al
mov byte [LABEL_DESC_CODE16 + 7], ah
; 初始化 32 位代码段描述符
xor eax, eax
mov ax, cs
shl eax, 4
add eax, LABEL_SEG_CODE32
mov word [LABEL_DESC_CODE32 + 2], ax
shr eax, 16
mov byte [LABEL_DESC_CODE32 + 4], al
mov byte [LABEL_DESC_CODE32 + 7], ah
; 初始化数据段描述符
xor eax, eax
mov ax, ds
shl eax, 4
add eax, LABEL_DATA
mov word [LABEL_DESC_DATA + 2], ax
shr eax, 16
mov byte [LABEL_DESC_DATA + 4], al
mov byte [LABEL_DESC_DATA + 7], ah
; 初始化堆栈段描述符
xor eax, eax
mov ax, ds
shl eax, 4
add eax, LABEL_STACK
mov word [LABEL_DESC_STACK + 2], ax
shr eax, 16
mov byte [LABEL_DESC_STACK + 4], al
mov byte [LABEL_DESC_STACK + 7], ah
; 为加载 GDTR 作准备
xor eax, eax
mov ax, ds
shl eax, 4
add eax, LABEL_GDT
; eax &- gdt 基地址
mov dword [GdtPtr + 2], eax ; [GdtPtr + 2] &- gdt 基地址
; 加载 GDTR
lgdt [GdtPtr]
; 打开地址线A20
in al, 92h
out 92h, al
; 准备切换到保护模式
mov eax, cr0
mov cr0, eax
; 真正进入保护模式
jmp dword SelectorCode32:0 ; 执行这一句会把 SelectorCode32 装入 cs, 并跳转到 Code32Selector:0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LABEL_REAL_E***Y:
; 从保护模式跳回到实模式就到了这里
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov sp, [SPValueInRealMode]
in al, 92h
and al, b ;
| 关闭 A20 地址线
out 92h, al
mov ax, 4c00h ; `.
; END of [SECTION .s16]
[SECTION .s32]; 32 位代码段. 由实模式跳入.
LABEL_SEG_CODE32:
mov ax, SelectorData
mov ds, ax
; 数据段选择子
mov ax, SelectorTest
mov es, ax
; 测试段选择子
mov ax, SelectorVideo
mov gs, ax
; 视频段选择子
mov ax, SelectorStack
mov ss, ax
; 堆栈段选择子
mov esp, TopOfStack
; 下面显示一个字符串
mov ah, 0Ch
; 0000: 黑底
1100: 红字
xor esi, esi
xor edi, edi
mov esi, OffsetPMMessage ; 源数据偏移
mov edi, (80 * 10 + 0) * 2 ; 目的数据偏移。屏幕第 10 行, 第 0 列。
test al, al
mov [gs:edi], ax
add edi, 2
.2: ; 显示完毕
call DispReturn
call TestRead
call TestWrite
call TestRead
; 到此停止
jmp SelectorCode16:0
; ------------------------------------------------------------------------
xor esi, esi
mov ecx, 8
mov al, [es:esi]
call DispAL
loop .loop
call DispReturn
; TestRead 结束-----------------------------------------------------------
; ------------------------------------------------------------------------
TestWrite:
xor esi, esi
xor edi, edi
mov esi, OffsetStrTest ; 源数据偏移
test al, al
mov [es:edi], al
; TestWrite 结束----------------------------------------------------------
; ------------------------------------------------------------------------
; 显示 AL 中的数字
; 数字已经存在 AL 中
; edi 始终指向要显示的下一个字符的位置
; 被改变的寄存器:
; ------------------------------------------------------------------------
mov ah, 0Ch
; 0000: 黑底
1100: 红字
mov dl, al
mov ecx, 2
and al, 01111b
add al, '0'
sub al, 0Ah
add al, 'A'
mov [gs:edi], ax
add edi, 2
mov al, dl
loop .begin
add edi, 2
; DispAL 结束-------------------------------------------------------------
; ------------------------------------------------------------------------
DispReturn:
mov eax, edi
mov bl, 160
and eax, 0FFh
mov bl, 160
mov edi, eax
; DispReturn 结束---------------------------------------------------------
SegCode32Len equ $ - LABEL_SEG_CODE32
; END of [SECTION .s32]
; 16 位代码段. 由 32 位代码段跳入, 跳出后到实模式
[SECTION .s16code]
LABEL_SEG_CODE16:
; 跳回实模式:
mov ax, SelectorNormal
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
mov eax, cr0
mov cr0, eax
LABEL_GO_BACK_TO_REAL:
jmp 0:LABEL_REAL_E***Y ; 段地址会在程序开始处被设置成正确的值
Code16Len equ $ - LABEL_SEG_CODE16
; END of [SECTION .s16code]
由于只是要验证PSP的作用,我就不详细解释每句代码了,这个程序的主要做的事情就是
注意在显示完成后,返回了dos,下面我们修改代码
[SECTION .s16]
LABEL_BEGIN:
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 0100h
mov [LABEL_GO_BACK_TO_REAL+3], ax
mov [SPValueInRealMode], sp
; 初始化 16 位代码段描述符
mov ax, cs
movzx eax, ax
shl eax, 4
add eax, LABEL_SEG_CODE16
mov word [LABEL_DESC_CODE16 + 2], ax
shr eax, 16
mov byte [LABEL_DESC_CODE16 + 4], al
mov byte [LABEL_DESC_CODE16 + 7], ah
[SECTION .s16]
LABEL_BEGIN:
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 0100h
mov [LABEL_GO_BACK_TO_REAL+3], ax
mov [SPValueInRealMode], sp
Here we give a test of covering the PSP to identify the effect of PSP
label_loop:
loop label_loop
; 初始化 16 位代码段描述符
mov ax, cs
movzx eax, ax
shl eax, 4
add eax, LABEL_SEG_CODE16
mov word [LABEL_DESC_CODE16 + 2], ax
shr eax, 16
mov byte [LABEL_DESC_CODE16 + 4], al
mov byte [LABEL_DESC_CODE16 + 7], ah
即在程序在16位实模式开始时,添加代码B,注意上面代码A句将栈顶指针sp指向了0100h处,即PSP末尾,真正程序的开始处。代码B的作用显而易见,是执行100次循环,向栈中push 1,将PSP覆盖掉。
下面我们看执行的效果:
可以看到,程序无法返回dos,而显示是正常的,这说明程序本身的执行是正常的,但是由于PSP被覆盖,程序结束后无法返回dos,这也就证明了PSP的作用。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:291219次
积分:3176
积分:3176
排名:第8097名
原创:42篇
转载:81篇
评论:88条PSP是什么?有什么用途? - 电玩巴士
您现在的位置:&&>>&&>>&&>>&&>>&文章正文
PSP是什么?有什么用途?
什么是PSP?它有什么用途?
&&& PSP简介
&&& PSP全称为 PlayStation Portable,是被SONY爱称为“小女儿”的最新掌上游戏机。在国内,很多玩家现在都叫它“小P”。索尼PSP于2004年12月12日震撼上市(2万790日元(日本售价,约合人民币1600元,其实当时进入到中国的价格大约为2000元左右,不幸的是,因为缺货,小P当时被炒到4000+元RMB。) &&& PSP机身呈黑(目前已有白色),尺寸为长170毫米×宽74毫米×高23毫米,重量为260克。屏幕长宽比例为16:9,宽屏高品位TFT液晶显示屏,分辨率为480×272像索的高精细屏幕,可以显示1677万色(16位色)。内置立体声喇叭,可以外接耳机,麦克风输入。可调节画面亮度,颜色对比度等,以及声音模式。在操作上,继承PS以及PS2的按键形状,但L、R键分别只有一个。
硬件参数:
约260g(含电池)
PSP CPU(1~333 MHz)
内置 eDRAM
4.3' 16:9 TFT宽屏液晶480x272 像索、1,677万色最大200cd/ 平方米(带亮度调整)
内置立体声输出
IEEE802.11b(Wi-Fi)标准USB2.0(Target)Memory Stick PRO DuIrDAIR remote(SIRCS标准)
内置驱动器
播放专用UMD驱动器
PSP Game、UMD Audio、UMD Video
内置锂电池、AC交流电
外部电源供给口、本机电源输入口、耳机/麦克风/控制器 一体型端口
区域码、年龄锁
(E3参考周边机器)
专用USB机器(摄像头、GPS、键盘)
预定周边机器
专用PSP主体支架、专用人体工学耳机(可装麦克风)、专有备用电池、PSP携带包、PSP吊带
方向键(上下左右)、模拟柄、决定键(△○×□)、L、R 键x1、START、SELECT、HOMEx 1、POWER on/hold/off 按键 x 1、Display、Sound、Volume +/- x1、无线LAN on/off 按键x 1、UMD EJECT x1、
&&& PSP可以做些什么呢?他可以看电影、听音乐、打游戏、看小说、用一些模拟器玩玩别的机型的游戏。讲的简单一些,PSP就是一部可以移动的娱乐玩具!
&&& PSP主机使用特制UMD光盘作为媒介,其容量最大高达1.8G,目前市场上已经推出了UMD游戏、UMD电影。每一款游戏以及电影都视乎开发商的销售计划而设置了不同定价。目前在国内, PSP游戏的价格一般都在300-350元左右,而电影也维持在300元左右。当然,如果你的银子不够多,完全可以在购买机器的时候,让商家帮你降级到1.5版,因为只有这个版本你才可以玩盗版的游戏。另一个需要提一下的就是“电影功能”。
&&& 以前我们玩PS2游戏是要分地域的,比如日版PS2只能玩日版PS2游戏,美版只能玩美版PS2游戏(改直读之后可以玩盗版及任意区域游戏,这个话题暂且不谈)。现在PSP打破了这个习惯,不管玩家在全球任何一个国家购买的任意一个版本的PSP,都可以玩到所有版本的PSP游戏。很遗憾的是UMD电影和游戏不同, UMD电影依然和DVD电影以及PS2游戏一样,是分区域销售的,比如某位玩友购买了一台日版PSP,之后购买一张美版UMD电影的话,PSP将不会正常运行,屏幕上将显示“区域不对应”。&&& 可能大家会提问了,目前大陆没有推出PSP,我为了能够看到带中文字幕的电影而应该买港版理论上是这么回事,不过现实情况是暂时市面上带了中文字幕的UMD电影实在是少之又少,最近仅出了唯一的一部香港UMD电影《头文字D》。美日版当然不大可能带中文字幕,而港版目前又没有UMD电影发行计划。所以大家在选择PSP版本方面,请不要多虑。目前市面上出售的PSP以日版居多,所以建议大家还是去上去下载支持PSP格式MP4的电影就可以了,没必要为这个小问题而头疼。
&&& PSP不仅有销售版本之分,其自身也有一个系统版本之分。查询PSP版本的方式为:在PSP主菜单里选择“Setting—System Setting—System Information”,点确定后可以看到几行数据,其中“System software Version 1.00”这一行字显示的就是PSP版本号。SONY为了升级更多的功能,一共推出的版本有1.0、1.50、1.51、1.52、2.0(0727)版、2.0(0824)版、2.01、2.50、2.60版,从表面上看,这些升级包的目的是为了进一步完善玩家手中PSP的功能——例如,1.5的PSP可以在退出MP4播放器后,记住上一次观看MP4电影的位置,而1.0就做不到了。又如,2.0的PSP具备了更完善的网页浏览器,而且还支持玩家自己DIY桌面。(注:DIY就是“自己做”的意思,在PSP里除非是2.0 - 0727版本机器你可以随意换桌面,其它版本也是可以的,但是风险太大了-包括2.0-0824版本,所以建议还是不要尝试!)
&&& 现在我们来介绍一下各版本的特点及差别,目前来说只有1.0和1.5版本的PSP是可以玩盗版游戏和模拟器(模拟器:为了让别的机器上的游戏可以正常在PSP上运行,而制作的一种软件。例如我们以前玩的FC游戏,只要在PSP机器上装个模拟器就可以玩了)。而2.0版本的0727版可以自定义图片。2.6版本就可以支持中文网页浏览及支持WMA格式的文件了。有的用户就要问了,我的机器是1.51和1.52的,那么我怎样才能降级到1.5呢?呵呵,这个问题就很简单啦,你可以先把他们升级到2.0,然后再降到1.5使用。
编辑:翠花猪
文章来源:本站原创 更新时间: 3:47:36
■ 相关新闻
TGBUS 力倡IT文化,崇尚互联共享,欢迎转载 [所有文章、画作等版权归原作者所有,转
载请注明出处]

参考资料

 

随机推荐