JQuery常用的方法 让我们看看这个小小的筐架能带来什么

来源:互联网 发布:淘宝网狗粮 编辑:程序博客网 时间:2024/04/30 11:03

数据的输入输出
   希望能够直接从键盘上接收数据,并能把结果从显示器上输出。
   操作系统为我们提供了方便地使用这些外设的软件资源。对于一般编程人员来讲,只需简单地按要求设置几个参数,然后发一个中断调用即可,方便快捷地实现数据的输入输出。
   在汇编语言程序中,系统软件资源可以通过ROM BIOS中断调用和DOS系统功能调用中断来使用。前者对硬件的依赖性强,可以更充分地驾驭硬件。后者使用更方便,但却无法实现某些功能。

  当某个功能两者都提供时,可以按自己的习惯使用其中的任一种,一般选用后者。

1.使用ROM BIOS中断调
BIOS用—基本的输入输出系统。主要由许多设备驱动程序组成,在PC系统中这组程序被固化在ROM中。

键盘中断调用16H
系统通过键盘硬件中断把扫描码翻译成ASCII码并与扫描码一起放入键盘缓冲区,每个字符占用两个字节,一个放它的ASCII码,另一个放扫描码。用户可以通过系统提供的键盘中断调用16H从键盘缓冲区中得到字符的ASCII码及其相应的扫描码。
16H中断服务子程序提供了多个功能,每个功能对应一个功能号。调用它们的方法是:
① 功能号→AH
② INT 16H

例: 从键盘接收一个字符,并送入CHAR变量。
CHAR DB ?
MOV AH , 0
INT 16H  ;等待从键盘接收一个字符
MOV CHAR , AL  ;接收到的字符保存
CHAR DB ?
LOP: MOV AH , 1
INT 16H  ;读键盘缓冲区
JZ LOP   ;若缓冲区无字符可取则循环等待
MOV CHAR , AL  ;接收到的字符保存

例: 设启动时初始化键盘为改写状态。编写能够实现以下要求的程序段:若按了Insert键,则转入插入处理,否则继续处于改写状态。
MOV AH , 2
INT 16H
TEST AL , 80H
JNZ INSERT
… …
INSERT:
… … ;插入处理


显示器中断调用10H
计算机的显示器有单色和彩色之分,它们可以工作于文本方式和图形方式。本节只介绍与文本方式有关的部分功能。

   显示器在文本方式下可以工作于40×25、80×25等显示方式。80×25显示方式是指一屏可以显示25行,每行80列字符。以坐标表示:屏幕左上角是0行0列(0,0),屏幕右上角是(0,79),左下角是(24,0),右下角是(24,79)。
   屏幕上的每个字符在显示ROM中有两个存储单元相对应,一个存放该字符的ASCII值,另一个存放其属性,所以一屏共需4000个单元。这就是显示器一页的内容,实际上分配给一页是4K字节。
   字符的属性确定了每个要显示字符的特性,下页图是彩色文本显示的属性字节。BL为闪烁位,BL=1为字符闪烁。I为亮度位,I=1为高亮度。亮度和闪烁只用于前景。当前景和背景选择相同颜色组合时,字符便无法看见

10H中断提供了多种功能,调用的方法是把功能号送入AH,其它调用参数按要求放在适当的寄存器中,然后发INT 10H中断调用即可。
① 设置显示模式
功能号: 0
调用参数: AL=显示模式。
说明:具体显示模式请参见教材中的表格。

例: 设置显示器为80×25彩色文本模式。
MOV AH ,0
MOV AL ,3
INT 10H

② 初始化窗口或窗口内容向上卷动
功能号: 6
调用参数:
AL=上卷行数   BH=空白区属性
CH=窗口左上角行号 CL=窗口左上角列号
DH=窗口右下角行号 DL=窗口右下角列号
说明:使屏幕内容上卷指定的行。如果屏幕的起始行列不为(0,0),结束行列不为(24,79),则屏幕只有指定的一部分具有上卷的功能,这个屏幕上的部分区域叫做窗口(Window)。像这样的窗口可以在屏幕上设置多个,这些窗口都可独立使用。
如果上卷超过指定窗口的顶部,这些行的内容就消失,出现在窗口底部的新行被填为空格,其属性由BH寄存器决定。

如果AL=0,则实际完成的工作是清除屏幕的功能。与6号功能类似的是7号,但它实现窗口内容向下卷动或初始化窗口的功能。
例: 清屏,并设置为蓝底白字属性。
MOV AH ,6
MOV AL ,0
MOV BH ,1FH
;蓝底白字属性
MOV CX ,0
MOV DH ,24
MOV DL ,4FH
INT 10H

例: 开一个窗口,并设置属性为白色背景黑色前景。
MOV AH ,6
MOV AL ,0
MOV BH ,70H ;白色背景黑色前景
MOV CH ,10 ;左上角行号
MOV CL ,20 ;左上角列号
MOV DH ,20 ;右下角行号
MOV DL ,60 ;右下角列号
INT 10H
③ 设置光标位置
功能号: 2
调用参数: BH=页号,DH=光标行号,DL=光标列号
例: 设置光标在10行20列。
MOV AH ,2 ;设置光标
MOV BH ,0
MOV DH ,10
MOV DL ,20
INT 10H
④ 读光标位置
功能号: 3
调用参数: BH=页号
返回参数:CH=光标开始行,CL=光标结束行,DH=光标所在行号,DL=光标所在列号。
例: 取光标当前位置。
MOV AH , 3
MOV BH , 0
INT 10H
⑤ 在当前光标位置显示属性和字符
功能号: 9
调用参数:
AL=字符的ASCII码, BL=字符的属性,
BH=页号,  CX=字符重复个数
说明:该功能不处理光标操作,因此当用此功能显示完字符后还需处理光标。与9号功能类似的是0AH号功能,其调用参数除不用设置BL外,其它同9号。0AH功能不能改变字符属性。
例: 在当前光标位置显示一个黑底黄*。
MOV AH , 9
MOV AL , '*'
MOV BH , 0
MOV BL , 0EH
MOV CX , 1
INT 10H

⑥ 以TTY(电传打字机)方式显示字符
功能号: 0EH
调用参数: AL=字符的ASCII码,BH=页号
说明:该功能较强,它在显示字符后可以对光标做必要的处理。另外可以处理特殊的控制符,如换行符(0AH)、Backspace(08H)、响铃符(07H)等。但它不能设置字符的属性。
例: 当出现错误需要发声警告时,可以输出响铃字符。
MOV AH ,0EH
MOV AL ,7  ;响铃字符的ASCII值
INT 10H

⑦ 显示字符串及属性
功能号: 13H
调用参数:
ES:BP=串首地址,CX=串长度,BH=页号,
BL=属性(AL=2或3时无效),DH=起始行号,DL=起始列号,
AL=写字符方式,只有低两位有意义:
1、若AL0=0,光标返回起始位置;若AL0=1,光标跟随移动。
2、若AL1=0,表示串中只有字符;若AL1=1,表示串由字符和属性交替组成:字符,属性,字符,属性……。
说明:此功能对8086/8088无效。

使用DOS系统功能调用
   每种操作系统都为用户提供了使用输入输出设备的系统资源。这些资源不同于ROM BIOS,它们对硬件的依赖性更少,兼容性较好、使用更方便。

   在DOS环境下,汇编语言除了通过调用ROM BIOS中断使用输入输出设备外,还可以通过DOS系统功能调用中断(INT 21H)使用它们。广泛采用的一种系统功能调用方法:功能号送AH寄存器,调用参数送所要求的位置,然后发INT 21H系统功能调用中断。

带回显的字符输入并识别Ctrl-C键
功能号: 1
返回参数: AL=输入字符的ASCII值
说明:等待从标准输入设备(通常为键盘)输入一个字符,把接收到的字符的ASCII值送给AL,并显示到显示器的当前光标位置。该功能识别Ctrl-C键并做相应处理。
例: 输入一个字符到CHAR变量中。
CHAR DB ?
MOV AH , 1
INT 21H
MOV CHAR , AL
从此例中可以看出使用DOS系统功能调用比使用BIOS中断更方便,因为它的功能更强。1号功能在输入的同时还显示到了屏幕上,并且适当处理光标。

输出一个字符
功能号: 2
调用参数: DL=输出字符的ASCII值
说明:该输出功能也使光标跟随移动。
例: 输出一个字符Y。
MOV AH , 2
MOV DL , ’Y’
INT 21H

输入字符串
功能号: 0AH
调用参数: DS:DX指向自定义的输入缓冲区首地址。
功能:从标准输入设备(例如键盘)输入一串字符到用户定义的缓冲区,直到按下Enter键为止。在接收的同时显示到屏幕上,并且识别Ctrl-C键,也处理DOS编辑键。
说明:自定义的输入缓冲区应是字节型,第一个字节是用户自定义的缓冲区最大长度,以字节计数。第二个字节是实际输入的字符个数,由系统自动计数并回填,计数值不包括最后一个回车键。从第三个字节开始存放输入的字符串,输入以回车键结束。
注意:回车符也被填入缓冲区中。输入字符的个数可以少于缓冲区长度。
例: 定义60个字符的缓冲区,并输入一串字符。
BUFFER DB 60  ;定义缓冲区长度
DB ?   ;预留实际输入字符个数的计数单元
DB 60 DUP(?)
  ;设DS已是BUFFER的段基址
MOV AH , 0AH  ;接收一串字符
LEA DX , BUFFER
INT 21H

实际上0AH具有很强的功能,它不仅使我们不用编写循环程序就可以输入字符串,还可以自动处理光标,解释DOS编辑键。
1.把实际输入的字符个数送给CX寄存器,以便后续处理。
MOV CL , BUFFER+1 ;实际输入字符数送CX
XOR CH , CH
2.把输入的第一个字符送给AL寄存器。
MOV AL , BUFFER+2

输出字符串
功能号: 9
调用参数: DS:DX指向要输出的以$结尾的字符串首地址。
功能:输出字符串到标准输出设备。
例: PRINT DB ’To input:’ , ’$’
;以$结尾的要输出的字符串
;设DS已指向PRINT的段基址
MOV AH , 9
LEA DX , PRINT
INT 21H
;输出字符串“To input:”到显示器
例: 编程实现输出“To input:”的提示信息,并等待从键盘输入一串字符送给BUFFER缓冲区。
使用DOS功能调用比使用ROM BIOS中断调用更简单方便,但INT 21H提供的功能并不完全,如它无法确定屏幕的光标位置,而INT 10H中断则不仅可以做到这一点,运行速度也要快得多。


微处理器伪指令
   汇编程序在缺省情况下只接受8086/8088的指令系统,即使在386以上机器也是如此。为了能够使用其它微处理器或协处理器的指令系统编写高级的32位机软件,需要在程序中增加选择微处理器的伪指令。
.286 .386, .486,.586, .8087, .287, .387选择相应的处理器指令系统
   这类伪操作一般放在整个程序的最前面如不给出,则汇编程序认为其默认值为.8086。
   注意较低版本的汇编程序并不完全支持这一组伪指令。例如即使在Pentium上使用MASM5.0,也不支持.586伪指令。

简化段定义
简化段定义是MASM 5.0版以后提供的,它较容易使用,和高级语言连接也比较容易,但这种格式并不适用于大多数汇编程序。

简化段定义常用结构
.MODEL SMALL  ;定义内存模式为小模式
.586   ;选择处理器
.STACK 512  ;定义堆栈段及其尺寸为512字节
.DATA   ;数据段开始
  ;数据在此处定义
.CODE   ;代码段开始
.STARTUP  ;加载后程序入口点
  ;代码在此处定义
.EXIT   ;返回DOS或父程序
END   ;整个程序结束
当.386等选择处理器伪指令出现在.model之前时表示缺省选择32位指令模式,出现在之后表示缺省选择16位指令模式。

简化段定义常用结构中的伪指令
定义存储模型伪指令
常用格式: .model 存储模型
定义堆栈段尺寸伪指令
格式: .stack size
功能:建立一个堆栈段并定义其大小。
说明:若不指定size参数,则使用缺省值1KB。

有关的预定义符号
@CODE:代码段段名。
@DATA:由.DATA和.STACK定义的段集合成的组名。
@FARDATA:独立数据段的段名。
MOV AX , @DATA
MOV DS , AX 

原创粉丝点击