文档详情

ibm-pc汇编语言程序设计第二版第9章.pptx

发布:2020-02-25约3.7千字共19页下载文档
文本预览下载声明
子程序调用 主程序 ……CALL SUBP …… 子程序 …… …… RETDOS/BIOS调用 源程序 …… INT n ……DOS/BIOS 例行程序 …… …… IRET实现机制不同 BIOS和DOS基本调用调用方法:1、将调用参数装入指定的寄存器中;2、BIOS或DOS功能号装入AH;3、如需子功能号,把它装入AL;4、按中断号调用DOS或BIOS中断(INT);5、检查或取得返回参数。例:DOS调用:键盘输入,显示输出 MOVAH, 01;DOS功能号:键盘输入 INT 21H ;DOS调用 MOV CHAR, AL ;返回参数: (AL) MOVDL, ’A’;调用参数: 输出字符 MOVAH, 02 ; DOS功能号: 显示输出 INT 21H ; DOS调用 1.键盘I/O (1) BIOS键盘中断 ( INT 16H)AH功能 返回参数 0 从键盘读一字符AL=字符码,AH=扫描码 1 读键盘缓冲区的字符 如ZF=0,AL=字符码, AH=扫描码 如ZF=1,缓冲区空 2 取键盘状态字节AL=键盘状态字节 字符数字键 字符码为ASCII 码 功能键、控制键 字符码为0对应一个扫描码DOS键盘中断 ( INT 21H)AH 功 能 调用参数 返回参数 1 从键盘输入一个字符并回显在屏幕上AL=字符 6 读键盘字符,不回显DL= 0FFH若有字符可取,AL=字符,ZF=0 若无字符可取,AL=0,ZF=1 7 从键盘输入一个字符,不回显AL=字符 8 从键盘输入一个字符,不回显,AL=字符 检测Ctrl-Break A 输入字符到缓冲区DS:DX = 缓冲区首址 B 读键盘状态AL=0FFH有键入,AL=00无键入 C 清除键盘缓冲区,AL=键盘功能号 并调用一种键盘功能 (1,6,7,8或A) 61H3268H70H570H79H0DH例: 输入字符串到缓冲区STRING DATA SEGMENT MAXLEN DB 32 MAXLEN DB 32 ,0, 32 DUP(?) ACTLEN DB ?MAXLEN DB 32 ,33 DUP(?) STRING DB 32 DUP(?)DATA ENDSCODE SEGMENT … LEA DX,MAXLEN MOV AH,0AH INT 21H …CODE ENDS ENDMAXLENACTLENSTRING 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0背景000 = 黑111 = 白前景000 = 黑111 = 白闪烁0 = 正常显示1 = 闪烁显示亮度0 = 正常亮度1 = 加强亮度显示器I/O 文本方式ASCII字符单色属性16色属性BL R G B I R G B背景 前景闪烁 BIOS显示中断INT 10H 功能号 AH=0,1, 2, 3, 5, 6, 7, 8, 9, 0AH, 0EH 13H (p.328) 例:清除屏幕 mov ah, 6 ; 屏幕初始化 mov al, 0 ; 全屏空白 mov bh, 7 ; 卷入行属性 mov ch, 0 ; 左上角行号 mov cl, 0 ; 左上角列号 mov dh, 24 ; 右下角行号 mov dl, 79 ; 右下角列号 int 10h ; BIOS调用 定义窗口例: 在品红背景下,显示5个浅绿色闪烁的星号。 MOV AH,09 ;光标位置下显示 MOV AL,’*’;显示字符 MOV BH,0 ;显示页0 MOV BL,0DAH; 1 101 1010 (表9.7) MOV CX,05;显示次数 INT 10H ;BIOS调用例:在屏幕上以红底兰字显示字符串:“WORLD SCENERY” STRING DB ‘WORLD SCENERY’ ;定义在ES段 LEN_TR DW 13 ┇ MOV AL,3;80×25, 16色文 本方式 MOV AH,0 INT 10
显示全部
相似文档