能否帮我总结一下int21的所有子功能,如4ch,09h,02h等 一般游戏编程用什么语言和软件
编程语言的种类繁多,总的来说分为机器语言、汇编语言以及高级语言三大类。
机械语言(machine language):计算机可直接识别、运行的二进制代码,执行速度快,资源占用少,但可读性不强,编程复杂;
汇编语言(assembly language):一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。目标代码简短,占用内存少,执行速度快,但缺乏可移植性,编程复杂;
高级语言(High-level programming language):相对于机器语言以及汇编语言,高级语言的可读性强,可移植性高,一般通过事先编好的一个叫做编译程序的机器语言程序编译成用机器指令表示的目标程序。现在流行的高级语言有Java、C语言、C++、C#、Pascal、Basic等等。
下面是游戏开发十大编程语言的列表。
1、C类#
C语言现在被广泛应用于许多游戏引擎中,是最流行的游戏开发语言之一。它有一个XNA框架、一套微软工具和运行时环境,使它特别适合Xbox或windows上的游戏。如果你想使用monogame在几乎任何平台上发布游戏,这是一种很好的语言。
2、C类++
C++是一种面向对象的语言,被认为是最难学习的语言之一,但它是游戏开发人员的重要语言。它允许对硬件和图形进程进行更直接的控制,这对行业很重要,是一些流行游戏引擎的流行语言。它还提供了对参数和内存管理的大量控制,从而提高了游戏的性能和用户体验。
3、Java
Java使用与C++相同的面向对象原则,但提供了更广泛的系统。Java代码通常在Java虚拟机(JVM)上运行,并转换为可在任何系统上执行的通用字节码。因此,Java是为数不多的能够让开发人员为任何给定系统开发游戏的游戏编程语言之一。它是最好的游戏编程语言之一。
4、JavaScript
JavaScript是最流行的游戏编程语言之一,尤其是作为一种在线交互语言。使用JavaScript,可以更容易地将代码与传统的网络技术(如HTML和CSS)集成,从而导致越来越多的跨平台移动游戏。
5、HTML5
HTML5已经成为互联网上最常见的游戏编程语言之一。你今天玩的大多数手机游戏都使用这种标记语言。使用JavaScript很容易创建复杂的基于web的游戏。该语言简单易学,不一定需要学习复杂的算法编程知识,因此成为游戏开发者的热门选择。
6、SQL语言
SQL被玩家用来访问后端帐户并在服务器上执行其他操作。有新的语言,库,框架,特别是AR,VR,图形,物理和游戏。
7、Python
Python是另一种提供OOP方法的语言,是游戏开发人员使用的最易于使用的通用编程语言之一。它有一个pyGame框架,允许程序员快速开发游戏原型。
8、Rust
铁锈被吹捧为C的继承者之一。它主要被Mozilla基金会用作系统编程语言。它具有面向对象到面向数据的方法,有助于游戏开发。
9、UnrealScript
Unrealscript是unreal引擎的本机脚本语言。它结合了面向对象、多重继承和功能丰富的游戏等复杂功能。该语言支持所有主要的游戏平台,如微软Windows、MacOS、Linux、steamos、Android和PlaystationVR。
10、Lua
由于语言结构和语法简单,Lua正成为游戏界最流行的语言之一。它是一种多平台脚本语言,许多现代游戏引擎都使用Lua作为主要的游戏设计编程语言。
1 从键盘输入一个字符并回显在屏幕上
2 显示一个字符
5 打印一个字符
6 读键盘字符
7 从键盘输入一个字符,不回显
8 从键盘输入一个字符,不回显
9 显示字符串
a 输入字符到缓冲区(ds:dx=缓冲区首址)
b 读键盘状态
c 清除键盘缓冲区,并调用一种键盘功能(al=键盘功能号)
f 打开文件
10 关闭文件
14 顺序读
15 顺序写
16 建立文件
1a 置dta地址
21 随机读
22 随机写
23 测文件大小
25 设置中断向量
27 随机分块读
28 随机分块写
2a 获取系统日期
2b 设置系统日期
2c 获取系统时间
2d 设置系统时间
35 取中断向量
子功能的操作:
1号子功能:从键盘输入一个字符并回显在屏幕上
返回参数:(al)<=输入字符的ascii码
2号子功能:显示一个字符
设置参数:(dl)<=要显示的字符
5号子功能:打印一个字符
设置参数:(dl)<=要打印的字符
6号子功能:显示一个字符
设置参数:(dl)<=要显示的字符
9号子功能:显示字符串
设置参数:(ds:dx)<=要显示的字符串地址
待显字符串存放在一个数据缓冲区,以"$"作为结束标志,且所显示内容必须是可显示的ascii码,否则会产生不可预料的结果。
a号子功能:输入字符到缓冲区( 当用户输入回车键时,结束输入;调用该功能前,在内存中建立一个输入缓冲区)
入口参数:(ds:dx)<=输入缓冲区的首地址;
出口参数:(ds:dx+2)<=实际输入字符数。
f号子功能:打开文件
设置参数:
ds<=fcb的段地址
dx<=fcb的偏移地址
返回参数:
al<=找到置00否则置ff
10号子功能:关闭文件
设置参数:
ds<=fcb的段地址
dx<=fcb的偏移地址
返回参数:
al<=修改成功置00否则置ff
14号子功能:顺序读
设置参数:
ds<=fcb的段地址
dx<=fcb的偏移地址
返回参数:
al<=0为读成功;1为记录中无数据;2为空间不够;3为记录不完整
15号子功能:顺序写
设置参数:
ds<=fcb的段地址
dx<=fcb的偏移地址
返回参数:
al<=0为写成功,1盘满,2为空间不够
16号子功能:建立文件
设置参数:
ds<=fcb的段地址
dx<=fcb的偏移地址
返回参数:
al<=建立成功置00否则置ff
1a号子功能:置dta地址
设置参数:
ds<=fcb的段地址
dx<=fcb的偏移地址
21号子功能:随机读
设置参数:
ds<=fcb的段地址
dx<=fcb的偏移地址
返回参数:
al<=0为读成功;1为文件结束;2为dat太小,传输结束;3为读到部分记录
22号子功能:随机写
设置参数:
ds<=fcb的段地址
dx<=fcb的偏移地址
返回参数:
al<=0为写成功;1盘满;2为dat太小,传输结束
23号子功能:测文件大小
设置参数:
ds<=fcb的段地址
dx<=fcb的偏移地址
返回参数:
al<=找到置00否则置ff
25号子功能:设置中断向量
设置参数:
al<=中断类型号
ds:dx<=中断向量
27号子功能:随机分块读
设置参数:
cx<=要读取的记录数
ds<=fcb的段地址
dx<=fcb的偏移地址
返回参数:
al<=0为全部记录读成功;1为文件结束,最后记录完整;2为dat太小,传输结束;3为文件结束,最后记录不完整
cx<=读取的实际记录数
28号子功能:随机分块写
设置参数:
cx<=要写取的记录数
ds<=fcb的段地址
dx<=fcb的偏移地址
返回参数:
al<=0为全部记录写成功;1为盘满;2为dat空间满
cx<=写取的实际记录数
2a号子功能:获取系统日期
返回参数:
(cx)<=年(1980-2099)
(dh)<=月(1-12)
(dl)<=日(1-31)
(al)<=星期(0-6)
2b号子功能:设置系统日期
设置参数:
(cx)<=年(1980-2099)
(dh)<=月(1-12)
(dl)<=日(1-31)
(al)<=星期(0-6)
返回参数:
al<=设置成功置00否则置ff
2c号子功能:获取系统时间
返回参数:
(ch)<-时(0-23)
(cl)<-分(0-59)
(dh)<-秒(0-59)
(dl)<-百分秒(0-9)
2d号子功能:设置系统时间
设置参数:
(ch)<-时(0-23)
(cl)<-分(0-59)
(dh)<-秒(0-59)
(dl)<-百分秒(0-9)
返回参数:
al<=设置成功置00否则置ff
35号子功能:取中断向量
设置参数:
al<=中断类型号
返回参数:
es:bx<=中断向量
用户定义的输入缓冲区格式:
aa,bb,cc,...,dh。
aa为用户定义的最多可键入字符数;
bb用户实际输入的字符数,不包括回车符;
cc字符串开始的字符;
0d回车符
例如:
data1 segment
var1 db 5,0,5 dup(0);定义缓冲区
data1 ends
lea dx,var1 ;设置缓冲区的首地址
mov ah,0ah
int 21h
lea si,var1+2 ;加载字符串开始地址
mov ch,var1+1 ;获得字符数
文件控制块fcb:
fcb是用户程序和操作系统之间传递有关磁盘文件信息的存储区,它一般定义在程序的数据段,共36个字分为10个信息。
例如:dj.txt文件在数据段定义的fcb:
tab1 label byte
0 drive db 4 磁盘驱动器:0为默认驱动器,1为驱动器a,2为驱动器b,...
1-8 name db 'dj' 文件名(不足8个字节时,用空格补足)
9-11 ext db 'txt' 扩展名(不足3个字节时,用空格补足)
12-13 curr_block dw 0 当前块号(一块有128个记录)
14-15 rec_size dw 0 记录大小
16-19 size dw 2 dup(?) 文件大小(记录号*记录大小)
20-21 date dw ? 日期
22-31 position db 10dup(?) 由dos自动填入
32 curr_rec db 0 当前记录号
33-36 rel_rec dw 2dup(?) 随机记录号