INT 10H
- 格式:doc
- 大小:19.00 KB
- 文档页数:4
一、选择题1.黑客搭线窃听属于(b )风险:A.信息存储安全 B.信息传输安全C. 信息访问安全D.以上都不正确2. DOS命令tracert的用途是:dA.测试网络连接性 B. 显示网络整体使用信息C. 显示地址解析表信息D. 追踪路由3. 以下哪种不是抵御拒绝服务攻击的手段:aA.部署入侵检测设备,提高对不断更新的攻击的识别和控制能力。
B.封闭端口,屏蔽掉外部攻击。
C.通过路由器配置访问列表过滤掉非法流量。
D.部署防火墙,提高网络抵御网络攻击的能力。
4. 计算机病毒是。
bA.一种芯片 B.一段特制的程序 C.一种生物病毒 D.一条命令5. 系统引导型病毒主要修改的中断向量是 c 。
A.INT 10H B.INT 19H C.INT 21H D.INT 13H6. 下列哪项不属于入侵检测系统的组成部件:aA.事件比较器B.事件发生器C.事件分析器D.响应单元7.下列哪项不是网络管理系统的主要功能:dA.实时监测网络活动B.数据包捕捉与发送C.网络测试与性能分析D.网络流量计费管理8.以下哪种不属于数据传输加密:bA.节点加密B.数据库加密C.链路加密D.端到端加密9.下列不属于VPN(虚拟专用网)的主要特点的是:aA. 高速性B. 经济性C.安全性D.专用性10. 下列哪项不是防火墙配置的典型结构:cA.双宿/多宿主机模式B.屏蔽主机模式C.链接核心模式D.屏蔽子网模式二、填空题1、计算机网络网络安全包括:、、和。
2、按照计算机病毒的链接方式可将病毒分成、、和。
3、宏病毒是利用进行侵入的。
4、防火墙是安全技术,入侵检测技术是安全技术。
5、结合现代加密技术和密码体制的特点,通常将其分为和。
6、物理安全在整个计算机网络信息系统安全中占有重要地位,主要包括、、、。
7、防火墙技术实际上是一种将和分隔开的隔离技术。
8、防火墙的安全规则由和组成。
9、防火墙的主要实现技术有:、、和。
10、PKI认证技术组成包括:、、、和。
INT 10H 是由BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在INT 10H 内。
使用INT 10H 中断服务程序时,先指定AH 寄存器为下表编号其中之一,该编号表示欲调用的功用,而其他寄存器的详细说明,参考表后文字,当一切设定好之后再调用INT 10H。
底下是它们的说明:13 显示字符串ES:BP = 串地址CX = 串长度DH, DL = 起始行列BH = 页号AL = 0,BL = 属性串:Char,char,……,charAL = 1,BL = 属性串:Char,char,……,charAL = 2串:Char,attr,……,char,attrAL = 3串:Char,attr,……,char,attr光标返回起始位置光标跟随移动光标返回起始位置光标跟随串移动AH=00HAH=00/INT 10H 是用来设定显示模式的服务程序,AL 寄存器表示欲设定的模式:AH=01H您可以把光标想成一个小的矩形,平时这个矩形扁平位于某字底部,但藉由此功能可以改变其大小与位置。
光标起始处与终止处分别由CL 与CH 的0 到4 位表示,参考下图:而CH 的第7 位必须是0,第5、6 位表示光标属性:位 6 位 5 属性0 0 正常0 1 隐形1 01 1 闪烁缓慢AH=02H此功能是设定光标位置,位置用DH、DL 表示,DH 表示列号,DL 表示行号。
由左至右称之为『列』,屏幕最上面一列为第零列,紧靠第零列的下一列称为第一列……;由上而下称之为『行』,屏幕最左边一行称之为第零行,紧靠第零行右边的一行为第一行。
故最左边,最上面的位置为DH=0 且DL=0;最左边第二列,DH=1,DL=0。
如果是文字模式时,BH 为欲改变光标位置的显示页,如果是图形模式,BH 要设为0。
以行列来说明DH、DL 之意义,小木偶常常搞混,底下以座标方式解释。
在文字模式下,字符的位置类似数学直角座标系的座标,但是Y 轴方向相反,Y 轴是以屏幕最上面为零,越下面越大,直到24 为止,存于DH 内。
汇编使⽤10h中断来显⽰字符串特么这个问题困扰了我好久,毕竟是个OS newbie,还没有汇编的基础。
在前天的加载loader的实验中,⽼师要求显⽰字符串,但是给的代码只是显⽰⼀个字符。
愚蠢的我实在没办法,最后为了按期完成实验,只能⼀个个字符地输出,呀真是羞耻。
好了,趁着清明假期,花了⼏个⼩时终于弄懂了。
下⾯进⼊正题!前戏是先对boot.asm和loader.asm编译:nasm -o boot.bin boot.asmnasm -o loader.bin loader.asm然后把boot.bin写⼊软盘a.img:dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc然后三连击,把挂载软盘:最后⼀个参数是你floppy⽂件夹的路径,⾃⼰随便去创建⼀个就好,不⼀定⽤/mnt⾥⾯的sudo mount -o loop a.img /home/jennings/exp2/floppy/sudo cp loader.bin /home/jennings/exp2/floppy/ -vsudo umount /home/jennings/exp2/floppy/重点来了(敲⿊板),以下是loader.asm的代码:org 0100h ; 告诉编译器程序加载到 0100h处mov ax, csmov ds, axmov es, axcall DispStr ; 调⽤显⽰字符串例程jmp $ ; ⽆限循环DispStr:mov ax, LoaderMessagemov bp, ax ; es:bp = 串地址mov cx, 31 ; cx = 串长度mov ax, 01301h ; ah = 13, al = 01hmov bx, 000ch ; 页号为0(bh = 0) ⿊底红字(bl = 0Ch,⾼亮)mov dh, 0;显⽰的⾏号mov dl, 39;显⽰的列号int 10h ; 10h 号中断retLoaderMessage: db "This is Zhengjianning's loader."解释程序:最上⾯的3个mov语句是让ds,es,cs指向同⼀个位置,之后调⽤显⽰字符串的函数,然后程序⽆限循环。
武汉理工大学《微机原理与接口技术》课程设计说明书课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 计算程序初始条件:按下列要求编程:(1)从键盘输入两个四位十六进制数。
(2)将这两个数以二进制形式输出,要求输出的0 和1 颜色交替变化。
(3)找出这两个数中的偶数,若有则以十进制输出,若无,输出“NO”。
(4)计算这两个数的平方和。
(5)数据的输入和结果的输出都要有必要的提示,且提示独占一行。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图时间安排:1月2日~1月3日:收集资料,方案选择1月4日~1月7日:整体流程,程序细节1月8日~1月10日:调试程序,报告撰写1月10:交设计报告,程序演示,答辩指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (1)1任务要求分析 (2)2方案比较及认证说明 (3)3系统原理 (4)3.1整体设计原理 (4)3.2 DOS和BIOS部分功能调用说明 (4)4硬件及程序设计 (6)4.1硬件说明 (6)4.2主程序设计 (6)4.3功能一子程序设计 (9)4.4功能二子程序设计 (12)4.5功能三子程序设计 (14)4.6功能四子程序设计 (18)4.7完成退出程序 (20)5结果分析 (21)6程序调试过程中遇到的问题 (21)心得体会 (22)参考文献 (23)摘要本设计通过调用DOS0AH功能调用实现从键盘上输入两个四位的16进制数,然后通过逻辑移位指令实现16进制数转换成二进制数,再调用BIOS9号功能调用,设置颜色在当前光标位置显示字符,为了判断输入16进制数的奇偶性,主要通过对数值某位操作,实现对数值奇偶性的判断。
INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在 INT 10H 内。
使用 INT 10H 中断服务程序时,先指定 AH 寄存器为下表编号其中之一,该编号表示欲调用的功用,而其他寄存器的详细说明,参考表后文字,当一切设定好之后再调用 INT 10H。
底下是它们的说明:BIOS中断:1、显示服务(Video Service——INT 10H)00H —设置显示器模式01H —设置光标形状02H —设置光标位置03H —读取光标信息04H —读取光笔位置05H —设置显示页06H、07H —初始化或滚屏08H —读光标处的字符及其属性09H —在光标处按指定属性显示字符0AH —在当前光标处显示字符0BH —设置调色板、背景色或边框0CH —写图形象素0DH —读图形象素0EH —在Teletype模式下显示字符0FH —读取显示器模式10H —颜色11H —字体12H —显示器的配置13H —在Teletype模式下显示字符串1AH —读取/设置显示组合编码1BH —读取功能/状态信息1CH —保存/恢复显示器状态(1)、功能00H功能描述:设置显示器模式入口参数:AH=00HAL=显示器模式,见下表所示出口参数:无可用的显示模式如下所列:00H:40×25 16色文本01H:40×25 16色文本02H:80×25 16色文本03H: 80×25 16色文本04H:320×200 4色05H:320×200 4色06H:640×200 2色07H:80×25 2色文本08H:160×200 16色09H:320×200 16色0AH:640×200 4色0BH:保留0CH:保留0DH:320×200 16色0EH:640×200 16色0FH:640×350 2(单色)10H:640×350 4色10H:640×350 16色11H:640×480 2色12H:640×480 16色13H:640×480 256色对于超级VGA显示卡,我们可用AX=4F02H和下列BX的值来设置其显示模式。
汇编打字程序完整代码已经经过测试,可以直接使用Init_game macro op1,op2,op3,op4,op5local nsmov cx,00hmov dh,op1mov dl,op2ns:mov ah,02h;设置光标位置mov bh,00h;页号为0int 10hpush cxmov ah,0ah;在当前光标位置写字符mov al,op3;al=字符的ascii码mov bh,00h;bh=页号bl=字符属性mov cx,01h;cx=写入字符重复次数int 10hpop cx;cx=0inc cx;cx=cx+1inc op4cmp cx,op5jne nsendmclear_screen macro op1,op2,op3,op4 ;清屏宏定义cx,屏幕的左上角,dx屏幕的右下角mov ah,06hmov al,00hmov bh,0ah;改变行属性的色彩,字的色彩,bh空白行的属性/07就是正常的黑底白字mov ch,op1mov cl,op2mov dh,op3mov dl,op4int 10hmov ah,02h;设置光标的位置从0000开始mov bh,00hmov dh,00hmov dl,00hint 10hendmmenu macro op1,op2,op3 ;菜单显示宏定义mov ah,02hmov bh,00hmov dl,op2int 10hmov ah,09hlea dx,op3int 21hendmdata segmentZK db "WELCOME TO PLAY!$"no db "date:2014/4/7 BY luozhilei QQ:1121364692 $"meg db "press Enter to start.......$"meg1 db "when a letter is dropping,please hit it!(just press the$ " meg2 db "dropping letter,so easy!)$"meg3 db "press space key to pause!repress space to continue!$" meg4 db "press ESC key to return main menu!$"meg5 db "press letter 'E' to exit!$"meg6 db "version 1.0","$"speed dw 600dletters_bak db "jwmilzoeucgpravskntxhdyqfb"db "iytpkwnxlsvxrmofzhgaebudjq"db "nwimzoexrphysfqtvdcgljukda"letters db 78d dup(0)letter_counter db 0life_flag db 78 dup(0)position_flag db 78 dup(0)present_position db 1data endsstack segment para stack 'stack'db 64 dup(0)stack endscode segmentmain proc farassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov letter_counter,00hmov present_position,1lea si,position_flag;mov ah,00hmov cx,00h------------------------------------lea di,letters;di的偏移地址为letterslea si,letters_bak;si的偏移地址为letter_bakmov cx,00h;cx=0mov ah,[si];ah=jmov [di],ah;ah的值放到letters里面;letters_bak的值放入letters里面inc si;si+1inc di;di+1inc cx;cx+1cmp cx,78d;jne init_letters;不为0就到init_letters,一直循环到letters里mov ah,00hlea si,life_flag;mov cx,00hover后,自动回去吧init_life_flag:mov [si],ahinc siinc cxcmp cx,78djne init_life_flag;-----------------------------------------------------------------------mov cx,00h ;ch=光标开始行,cl=光标结束行根据CX给出光标的大小mov ah,01hor ch,00010000b;ch>20h,光标消失,cl>20h,覆盖字符int 10hclear_screen 00d,00d,24d,79d ;清屏,0000- 2479Init_game 00d,00d,07h,dl,80d ;这个四个是初始化屏幕的上下左右的框框Init_game 24d,00d,07h,dl,80dInit_game 00d,00d,07h,dh,25dInit_game 00d,79d,07h,dh,25dmenu 05d,15d,ZK ;菜单信息的宏调用,这五行是在屏幕上显示提示消息menu 07h,15d,nomenu 09d,15d,megmenu 11d,15d,meg1menu 13d,10d,meg2menu 15d,15d,meg3menu 17d,15d,meg4menu 19d,15d,meg5menu 21d,15d,meg6put: mov ah,02h ;设置光标位置mov bh,00h;设置页码mov dh,22d;dx行列坐标mov dl,33dint 10hmov ah,01h ;从键盘输入任意字符并回显示,al=输入字符int 21hcmp al,0dh;是否为换行符je speed3;如果是换行符则跳转到speed3处cmp al,45h;比较是否为eje exit;如果为e,转到exitexit: mov ah,4chint 21hspeed3:mov ax,speed+12mov speed,axjmp beginbegin: clear_screen 01d,01d,23d,78d ;清屏宏调用; clear_screen 01d,01d,23d,78dInit_game 23d,01d,03h,dl,78d;23d01d行列坐标,初始化倒数第二行的字符mov ah,02hmov bh,00hmov dh,01hmov dl,01hint 10hmov cx,00hlea si,letters ;si的偏移地址是lettersnextletter:mov ah,02h ;显示字母mov dl,[si] ;把letters的字符放到dl里int 21h ;通过dos中断的2号功能项,把字符显示出来inc siinc cxcmp cx,78dje nextcycle;全部显示完了后,跳到nextcyclejmp nextletterfrom_front:sub present_position,78d ;当超过78个字时的处理方式减去78jmp gobackto_si;跑到gobackto_si这来find_zero:cmp letter_counter,78d ;letter_counter有78了,初始化je recycle;如果有跑到recyclecmp present_position,78d;如果present_position等于78d,je from_onemov ah,00hnextsi: add present_position,01hinc sicmp [si],ahje gobackto_dicmp present_position,78dje from_onejmp nextsifrom_one:mov present_position,01h ;present_position=01jmp gobackto_si;---------------------------------------------------------------------------------------recycle:mov letter_counter,00h;letter_counter=0mov present_position,01d;present_position=01lea si,position_flag;si=position_flag的偏移地址mov cx,00hmov ah,00hclearsi:mov [si],ah;position_flag地址搞成0inc cxcmp cx,78dje nextcycleinc sijmp clearsinextcycle:lea di,letters;di的偏移地址是letters[字母]lea si,position_flag;si的偏移地址是position_flagadd present_position,31d;31一跳,这个你可以随便设置cmp present_position,78d;;超过78个字节ja from_front;------------------------------------------------------------------------------------------------gobackto_si:add si,word ptr present_position;si=si+present_position,si向后偏移dec si; 要不要都无所谓,只不过,因为开始就觉定了是要31一跳,所以这里减一个1位mov ah,[si];把position_flag放到ah里cmp ah,01h;看看position_flag里面有没有标志1je find_zero;如果ah为1转移,否则gobackto_di:mov ah,01hmov [si],ahadd di,word ptr present_positiondec di;因为列坐标是从0开始,而字符是从1开始,所以这里是32-1mov dl,present_position;mov ah,02hmov bh,00hmov dh,01hint 10hmov cx,00h;------------------------------------------------------------------------------------------------------------------------nextrow: push cxmov cx,00hout_cycle: ; 延迟push cxmov cx,00hin_cycle:add cx,01hcmp cx,1000 ;jne in_cycle ;zf=0转到标号处执行,push dxmov ah,06h ;从键盘输入字符,al等于字符mov dl,0ffhint 21hpop dxjz passcmp al,1bh ;如果键入ESC,则返回主菜单je to_start1cmp al," " ;如果键入SPACE,则游戏暂停je pausecmp al,[di] ;输入字母正确!则字母消失je disappearpass: pop cxinc cxcmp cx,speedje printjmp out_cyclepause: push dx mov ah,06hmov dl,0ffhint 21hpop dxcmp al," "jne pausejmp passto_start1: ;返回主菜单jmp startprint:mov ah,0ah ;在当前光标位置写空格mov al," "mov bh,00hmov cx,01hint 10hinc dhmov ah,02h ;改变光标位置mov bh,00hmov ah,0ah ;在当前光标位置写字母mov al,[di]mov bh,00hmov cx,01hint 10hpop cxinc cxcmp cx,21dje print_next_letterjmp nextrow ;下一行disappear: ;击中字母后输出空格pop cxpop cxmov ah,0ah;在光标处按原来属性显示字符mov al," "mov bh,00hmov cx,01hint 10hjmp hitprint_next_letter:lea si,life_flagadd si,word ptr present_positiondec simov ah,0ah;在当前光标处按原有属性显示字符mov al," ";最倒数第二排写入字符,意思是当掉下来的字符到倒数第二行的时候,自动变成空格消失mov bh,00hmov cx,01hint 10hinc dh ;这就是到了最后一行mov ah,02hmov bh,00hint 10hmov ah,0ah;把最后一行的字符变成空格mov al," "mov bh,00hmov cx,01h;重复输出,这里的重复输出的意思就是输入一个空格int 10hmov ah,1;把life_flag变成1,这样下次就可以不在同一个位置掉字符下来mov [si],ahhit: mov ah,02h;设置光标mov bh,00hmov dh,01h;第一行mov dl,present_position;下一个字符的列mov al,[di] ; 出现下一个新字母的数法add al,7;di+7cmp al,7ah;z的ascii码就是7ah,所以当al大于7ah时转移ja convey_lettermov ah,0ah;在当前光标按原有属性显示字符,al=字符mov bh,00hmov cx,01hint 10hmov [di],aladd letter_counter,01h;统计次数jmp nextcycleconvey_letter:sub al,7ahadd al,61h;al等于要显示的字符,加61表示是小写字母mov ah,0ahmov bh,00hmov cx,01hint 10hmov [di],aladd letter_counter,01hjmp nextcycle ;没弄懂作者这里是什么意思,到了这里就jmp了那写下面的程序做屁clear_screen 01,01,23,78mov ah,02hmov bh,00hmov dh,11dmov dl,20dint 10hinc dhinc dhmov ah,02hmov bh,00hint 10hnotkey:mov ah,07hint 21hcmp al,0dhje to_startcmp al,1bhje overjmp notkeyto_start:clear_screen 00,00,24,79jmp startover: clear_screen 01,01,23,78 mov ah,02hmov bh,00hmov dh,11dmov dl,15hint 10hmov ah,02hmov bh,00hmov dh,13dmov dl,15hint 10hmov ah,07hint 21hmov ah,07hint 21hclear_screen 00,00,24,79 mov ax,4c00hint 21hmain endpcode endsend start。
; 用于输出菜单:在光标在 (op1,op2) 开始地地方输出字符串 op3ENDM ; 将左上角 (op1,op2) MACRO op1,op2,op3,op4MOV AH,06hMOV AL,00h MOV BH,07h MOV CH,op1 MOV CL,op2 MOV DH,op3 MOV DL,op4 INT 10hMOV AH,02hMOV BH,00h MOV DH,op1 MOV DL,op2 INT 10hENDM初始化游戏 , 用于设置游戏地边框 Init_game MACROop1,op2,op3,op4,op5,op6MOV CX,00h将光标设置在 行:DH,列:DLMOV DH,op1INT 10hMOV AH,0ah MOV AL,op3 MOV BH,00h MOV CX,01hINT 10h ;****************** POP CXMACRO op1,op2,op3MOV AH,02h MOV BH,00h MOV DH,op1MOV DL,op2 INT 10h MOV AH,09h LEA DX,op3 INT21hmenuPUSH CX 右下角 (op3,op4) 决定地矩形区域清除显示字符clear_screen ・*******************设置光标在 op1 行 ,op2 列・ **********************************・ ******************MOVop6:MOV MOVDL,op2AH,02hBH,00h在指定光标地位置输出字符 op3"jwmilzoeucgpravskntxhdyqfbiytpkwnxlsvxrmofzhgaebudjqnwimzoexrphysfqtvdcgljukda" speed DW30000Dletter_counter DB 0 present_position DB 0 data ENDS CODE SEGMENTASSUME CS:CODE , DS:data START:MOV AX,data MOVDS,AX;***************** 首先设置游戏地主边框 Init_game 00h,00h,0ah,DL,80d,L1 Init_game 24d,00d,0ah,DL,80d,L2 Init_game 00d,00d,0ah,DH,25d,L3 Init_game 00d,79d,0ah,DH,25d,L4clear_screen 01d,01d,23d,78d menu 05d,15d,ZK menu 07d,15d,mes1 menu 09d,15d,mes2 menu11d,15d,mes3 menu 13d,15d,mes4 menu 15d,15d,mes5 menu 17d,15d,mes6 MOV AH,02h MOV BH,00h MOVDH,22dINC CXINCop4 ;op4用来决疋输出增长地方向是列还是仃DH :仃CMPCX,op5JNEop6;*******************重复输出字符 op3,op5 次 ,ENDM;*********************************** 数据段 , 用于初始化游戏有关地数据data SEGMENTZK DB "WELCOME TO PLAY!$"mes1 DB "data: 2011/01/08$"mes2 DB "press Enter key to continue .. $"mes3 DB "when a letter is droping ,please hit it!$"mes4 DB "press space key to pause!$"mes5 DB "press ESC key to return main interface!$"mes6 DB "press letter 'E'to exit!$"lost DB "Game over!$"letter DBDL :列gobackto_di:ADD DI,WORD PTR present_position DEC DIMOV DL,present_position MOVAH,02hMOV DL,33d INT 10h ;************** 设置光标地位置MOV AH,01h;********************设定DOS 为键盘输入字符并回显功能INT 21h;********************判断输入地字符CMP AL,0dhJE speed3 ; 输入为 enter 键, 跳到游戏主程序CMP AL,45h JE L10; 输入为 E, 跳到退出 , 结束游戏 L10: JMPexitspeed3: clear_screen 01d,01d,23d,78d Init_game 23d,01d,01d,DL,78d,next5MOV AH,02hMOV BH,00h MOV DH,01d MOV DL,01dINT 10hMOV CX,00h LEA SI,lett ernextletter:MOV DL,[SI] MOV AH,02h INT 21h INC SI INC CX CMP CX,78d JE nextcycle JMP nextletter改正下落地址超过 78 列地地址from_front: SUBJMPpresent_position,78d gobackto_dinextcycle:LEADI,letter ;DIADD present_position,31d ;加上 31CMP present_position,78d则改正指向待下落字母地首地址将下落地字母地列数设置为在前一个下落字母基础上; 比较设置过地下落地址地列数是否超过78列, 若超过 ,JA from_front・ ********************用于将光标定位在待下落地字母 , 用于操作该字母・ *********************MOV BH,00h MOV DH,01d INT 10h・ ******************** 三层循环, 第一层用于判断是否下落了21 ;第二层和第三层结合构成延时次, 即一次下落是否完成, 控制每一行地下落速度MOV CX,00h nextrow:PUSHMOV CX,00h out_cycle:PUSHMOV CXCX CX,00hin_cycle:INC CXCMP CX,1000hJNE in_cyclePUSH DX・*******************JMOV AH,06hMOV DL,0ffhINT 21hPOP DX・ ******************* 设置DOS为键盘输入字符且不回显状态判断输入字符:ESC-- 进入主程序选择界面space-- 暂停下落地字符-- 消失CMP JEAL,1bh to_start1CMP JE CMP JE AL,' '・ ************ pauseAL,[DI]disappear延时程序, 用于控制下落过程中在每一行地延时时间时间=speed*10000 pass:POPINC CX CMPJE print; CXCX,speed ; 判断在一行地延时是否达到在该行延时时间达到且没有被击中3000 次(用于控制延时时间), 跳到print, 即该行输出空格, 下一行输出字母JMP out_cycle;・*******************实现,除非再次输入空格延时未达到, 重新开始用于响应空格地暂停程序:通过将, 否则循环检查DOS设置为按键输入且不回显状态pause:PUSH DXMOV AH,06hMOV DL,0ffhINT 21h POP DXCMP AL,' ' JNE pause JMP pass ・ ********************** 用于转接跳转到开始主程序to_start1: JMP start ・ ***********当上一行停留时间达到且没有被正确击中 , 将上一行输出空格 , 该行输出下落地字母 print: ・ *************MOV 将上一行输出空格AH,0ah MOV MOv MOv INT AL,' ' BH,00h CX,01h 10h 增加DH 地值,使光标指向该行 INC DH MOV AH,02h MOV BH,00hINT 10h************* 在该行 MOV AH,0ah MOV AL,[DI] MOV BH,00hMOV CX,01h INT 10h・*************・*************落地字母 POP INC CMP JE 用于确定下落次数是否达到 21 CX CX CX,21d print_next_letter; 次 , 即该字母下落是否完成 落次数达到 21 次, 字母下落完成 , 跳到下一个子程序 , 用 于补充下落地字母 JMP disappear: POP POP MOVMOVnextrow;************CXCX当下落过程中击中该字母 , 使其消失 , 即输出空格代替 MOV MOV INT AH,0ahAL,' 'BH,00h CX,01h 10hJMPhi tprint_next_letter:;************* 将下落到底且没有被击中地位置输出为空格MOV AH,0ah MOV AL,' ' MOV BH,00hMOV CX,01h INT 10hINC DH MOV AH,02h MOV BH,00h INT10h********* 在窗口底框上一次标识字母输出为空格 , 用于表示该列字母下降时未被击中 MOV AH,0ah MOV AL,' ' MOV BH,00h MOV CX,01h INT 10h INCletter_counter ;计算下落未被击中地次数CMP letter_counter,78d ; 下落地未被击中次数达到 78 次 , 返回主界面 , 重新来过 JE completehit:用于补充新字母 , 把光标设置下落字母地所在列地第一行MOV AH,02h MOV BH,00hMOV DH,01hMOV DL,present_position INT10h・**************JvLMOV ADD CMP JA DIsplay: AL,[DI]AL,7h AL,7ahconvey_letter; 判断新字母是否超出了 z 地范围 , 超出则改正MOV MOV MOV AH,0ah BH,00h CX,01h INT 10hJMP nextcycle convey_letter: SUB AL,7ah ADD AL,61h JMPDIsplay・ *****************将光标指向底层一排用于标识字母是否被击中地位置・ **************complete:menu11d,35d,lostMOV CX,00h ・******************* LOOP1:PUSH MOV LOOP2:INC CMP JNE POP INC CMP JNE JMP exit: MOV INTCODE ENDS END CX CX,00hCX CX,60000dLOOP2 CX CX CX,30000d LOOP1 START AH,4ch21h START。
· AH=00H——设置显示方式入口参数:AL=方式号。
本功能调用使显示器工作在设定的显示方式,并清屏。
· AH=01H——设置光标形状入口参数:CH=光标起始的扫描线号,CL=光标终止的扫描线号。
· AH=02H——设置光标位置入口参数:DH=光标所在的行号,DL=光标所在的列号,BH=光标所在的页号。
· AH=03H——查询光标形状和位置入口参数:BH=要查询光标所在的页号。
出口参数:CH=光标起始扫描线号,CL=光标终止扫描线号,DH=光标行号,DL=光标列号。
· AH=04H——查询光笔位置· AH=05H——设置当前显示页入口参数:AL=页号。
设定某页,则此页变为当前显示页。
缺省时为0页。
· AH=06H——窗口上滚入口参数:CH=滚动窗口左上角的行号,CL=滚动窗口左上角的列号,DH=滚动窗口右下角的行号,DL=滚动的行数,BH=填充的正文属性字节(字符方式)或填充字节(图形方式)。
· AH=07H——窗口下滚入口参数:同6号功能。
· AH=08H——读光标处的字符及其属性入口参数:BH=所在页号。
出口参数:AL=所读字符的ASCII码,AH=所读字符的属性。
· AH=09H——在光标处写字符及其属性入口参数:AL=字符的ASCII码,BL=属性字节(文本方式)或颜色值(图形方式),BH =页号,CX=连续写字符的个数。
· AH=0AH——在光标处写字符入口参数:AL=字符的ASCII码,BL=颜色值(图形方式),BH=页号,CX=连续写字符的个数。
· AH=0BH——设置CGA调色板入口参数:① BH=0时,BL=图形方式的背景色或字符方式的边界色(0~15)。
② BH=1时,BL=选用的调色板号(0或1对应第0或第1色组)· AH=0CH——写图形象素(写点)入口参数:AL=象素值,CX=象素写到的列值,DX=象素写到的行值。
第一题 8051单片机内包含哪些主要逻辑功能部件?1.C PU2.R OM3.R AM4.T imer/Counter5.U ART(串口)(通用异步串行接收机发送机)6.4个8bits Port(并口)7.I nt0,int1(外部中断)第二题8051的/EA端有什么用处?1.E A端Enable Address(外部程序存储器地址允许输入端)2.低电平有效3.E A=0(低电平有效)时,只允许访问外部存储器4.E A=1时,可以访问内部和外部存储器5.E A还有复用功能,Vpp(Pulse of Programming)(编程脉冲)(固化编程电压输入端)第三题8051的存储器分为那几个空间?怎样区别不同空间的寻址?1.R OM(片内ROM和片外ROM统一编址)(使用MOVC)(数据传送指令)(16bits地址)(64KB)2.片外RAM(MOVX)(16bits地址)(64KB)3.片内RAM(MOV)(8bits地址)(256B)什么是普林斯顿结构?哈佛结构?1.普林斯顿结构,ROM和RAM统一编址2.哈佛结构,ROM和RAM分开编址第四章8051片内RAM的空间是怎样分配的?1.片内RAM有256B2.低128B是真正的RAM区3.高128B是SFR(特殊功能寄存器)区真正的RAM区可以分成那几个部分?1.4个工作寄存器区(R0~R7)2.位寻址区3.真正的RAM区第五题简述布尔处理存储器的空间分配,片内RAM中包含哪些可位寻址单元?1.片内RAM区从00H~FFH(256B)2.其中20H~2FH(字节地址)是位寻址区3.对应的位地址是00H~7FH第六题如何简洁地判断8051正在工作?1.用示波器观察8051的XTAL2端是否有脉冲信号输出(判断震荡电路工作是否正常?)2.A LE(地址锁存允许)(Address Latch Enable)输出是fosc的6分频3.用示波器观察ALE是否有脉冲输出(判断 8051芯片的好坏?)4.观察PSEN(判断8051能够到EPROM 或ROM中读取指令码?)5.因为/PSEN接外部EPROM(ROM)的/OE端子6.O E=Output Enable(输出允许)第七题 8051如何确定和改变当前工作寄存器组?1.P SW(程序状态字)(Program Status Word)中的RS1和RS02.可以给出4中组合3.用来从4组工作寄存器组中进行选择4.P SW属于SFR(Special Function Register)(特殊功能寄存器)第十题 8051的/EA信号有什么功能?在使用8031的时候,EA信号引脚应该如何处理?1.E A=Enable Address(外部程序存储器地址允许输入端)2.E A=0(低电平有效)只允许访问外部存储器3.E A=1内外ROM都可以访问4.因为8031没有片内ROM5.只能访问片外的EPROM6.应该使EA=0(有效)第十二题内部RAM第128B单元划分成那几个主要部分?各部分主要功能是什么?1.当前工作寄存器组(4组)(00H~1FH)2.位寻址区(20H~2FH)3.真正的RAM区(30H~7FH)第十三题使单片机复位有哪几种方法?复位后机器的初始状态如何?1.上电复位2.上电复位+手动复位3.脉冲复位4.复位会重置一些寄存器第十四题开机复位后,CPU使用的是哪组工作寄存器?它们的地址什么什么?1.8051有4个工作寄存器组2.分别从R0~R73.分别位于 00H~07H,08H~0FH,10H~17H,18H~1FH4.开机复位后,默认使用寄存器组0第十五题 PSW的作用是什么?作用是什么?1.P SW是一个SFR(特殊功能寄存器)2.位于片内RAM的高128B3.具体地址D0H(00H~FFH)(片内RAM的编址)(8bits编址方法)4.P SW=Program Status Word(程序状态字)PSW的常用标志位有哪些?1.C Y=Carry(进位标志位)2.A C=Auxiliary Carry(辅助进位标志位)(半进位标志位)3.F0用户标志位4.R S1,RS0,用来选择当前工作寄存器组(R0~R7)(4选1)5.O V=Overflow(溢出标志位)6.P=Parity(奇偶校验位)第十五题位地址7CH和字节地址7CH如何区别?位地址7CH在片内RAM中什么地方?1.片内RAM的地址从00H~FFH2.其中20H~2FH(字节地址)是位寻址区(bits)3.位地址从00H~7FH4.位地址7CH位于字节地址2FH5.可以从寻址方式来区分6.位地址使用位寻址方式7.字节地址使用直接寻址,间接寻址第十七题 8051的时钟周期,震荡周期有什么关系?1.震荡周期2.时钟周期=状态周期(state)3.时钟周期=2*振荡周期4.机器周期=6*时钟周期=12*震荡周期5.指令周期=1~4个机器周期第十八题一个机器周期的时序如何划分?1.一个机器周期=12个震荡周期=6个时钟周期(状态周期)2.S1P1,S1P2,S2P1,S2P2,S3P1,S3P2,S4P1,S4P2,S5P1,S5P2,S6P1,S6P23.其中s=state(状态),p=phase(相位)第十九题什么叫做堆栈?SP是什么?它的作用是什么?8051堆栈的容量不能超过多少个字节?1.S tack(堆栈)2.具有FILO,LIFO的特性3.S P=Stack Pointer(堆栈指针)4.S P是栈顶指示器评论这张1.微处理器,RAM,ROM,以及I/O口,定时器,构成的微型计算机称为单片机。
一、第一部分数制、编码及计算机结构1.十进制数11.375转换为二进制数为_1011.011_____;二进制数1101101转换为十进制数为______。
4 二进制数1101.101转化成十进制数是13.6255 十六进制64.CH转化成十进制数是100.756 十进制数112.25转换成二进制数是1110000.01B7 将十进制数301.6875转换成等值的十六进制数为12D.B8 将二进制数110100110.101101B转化成十六进制数为1A6.B49 将十六进制数2A8F。
6DH转换为二进制数为10101010001111.01101101B26.十六进制数6B.CH转换为十进制数为107.75______;49的BCD编码是01001001(压缩的BCD码)。
十进制数234.15的BC D码表示为001000110100.00010101将BC D码(00010001.00100101)转化成二进制数1011.01.将二进制数01000111转换成BC D码011100015.A=-113D,则[A]补==10001111B14.A=+0110101,B=-0110101,[A+B]补=_00000000_____。
20.[A]补=10011101;[B]补=01010000;[A+B]补=11101101______,则运算结果的标位SF=__1__,OF=_0___。
25.A=-84,则[A]反=_10101011_____,[A]补=_10101100_____。
18.信息码为0110100,则奇校验码为__00110100__________。
22.信息码为0110100,则偶校验码为___10110100_________。
57.位(bi t)是存储器中存储信息的最小单位,称为_位____。
两个带符号数相加或者相减时,若C7⊕C6=1 则结果产生溢出。
三八译码器的使能端G1 G2A G2B 输入信号时1 0 0 ,译码器有效.译码输入端CBA输入信号000 时,Y0 有效译码输入端CBA输入信号010 时, Y2 有效(8086CPU基本结构)15. 从CPU的NMI引脚产生的中断叫做非屏蔽中断,它的响应不受IF标志___的影响。
int 10h指令int 10h指令是8086汇编语言中的一条指令,用于控制视频显示模式和光标位置。
它是一种底层的操作方式,通过直接控制硬件来实现屏幕的显示和光标的移动。
在8086汇编语言中,所有的操作都是通过中断来实现的。
int 10h 指令就是其中的一种中断,它用于控制显示器的相关操作。
通过调用int 10h指令,程序可以实现屏幕的清屏、字符的打印、光标的移动等功能。
在使用int 10h指令之前,程序需要将相关的参数存放在寄存器中。
例如,如果要设置显示模式为文本模式,可以将显示模式号存放在AH寄存器中,然后通过int 10h指令调用对应的中断。
通过这种方式,程序可以灵活地控制显示器的显示效果。
int 10h指令的使用非常灵活,可以根据具体的需求进行调用。
例如,当需要在屏幕上打印字符时,可以将字符的ASCII码存放在AL 寄存器中,然后将打印字符的子功能号存放在AH寄存器中,最后通过int 10h指令调用对应的中断。
除了控制显示模式和字符打印外,int 10h指令还可以控制光标的移动。
通过将光标的行号和列号存放在BH和BL寄存器中,然后通过int 10h指令调用对应的中断,程序可以实现光标的上下左右移动。
总的来说,int 10h指令是8086汇编语言中非常重要的一条指令,它可以通过直接控制硬件来实现屏幕的显示和光标的移动。
通过灵活地设置参数和调用不同的中断,程序可以实现丰富多样的显示效果。
掌握和熟练使用int 10h指令对于编写底层的显示程序非常重要,它可以帮助程序员实现自定义的显示效果,提高程序的用户体验。
因此,int 10h指令是8086汇编语言中不可或缺的一部分。
它的灵活性和强大的功能使得程序员可以通过直接控制硬件来实现各种各样的显示效果。
掌握和熟练使用int 10h指令,可以帮助程序员编写出高效、优雅的显示程序,提升用户体验,实现更加丰富多样的功能。
Modbus协议RTU的10H指令是一种常见的协议,适用于Modbus 协议支持的设备之间的通信。
它提供了通过 Modbus RTU协议进行数据交互的能力,例如利用西门子smart200系列PLC进行通讯编程。
10H指令的基本原理是将接收的数据存储到指定的地址,该地址通常是内存地址或CPU寄存器地址。
在数据模型和功能调用上,10H 指令与Modbus协议其他指令相同,采用了简单的协议数据单元(PDU)和四个基本表格来表示数据模型。
在使用10H指令时,设备通过发送数据包给远程设备,远程设备将接收到的数据存储到指定的地址中。
以下是10H指令的一些主要特点:1. 指令地址:在10H指令中,指令地址用来指定存储数据的内存地址或CPU寄存器地址。
2. 数据长度:数据长度指的是接收的数据的字节数。
3. 数据类型:数据类型指的是数据的类型,包括十六进制数、整数、浮点数和字符串。
4. 从站地址:从站地址是指发送数据的设备的地址。
5. 返回地址:返回地址是指存储结果的内存地址或CPU寄存器地址。
6. 指令码:指令码是指令的唯一标识符,是设备读取数据时需要向远程设备发送的一个数据包。
7. 数据方向:数据方向指的是数据是由远程设备发送到本地设备还是本地设备发送到远程设备。
在实际应用中,10H指令可以通过不同的编程语言来实现,包括汇编语言、C语言、Java和Python等。
例如,在西门子smart200系列PLC中,可以使用库文件(如S7-200 modbus库)来实现10H指令。
总的来说,Modbus协议RTU的10H指令是一种常用的协议,适用于在Modbus协议支持的设备之间进行数据交互,提供了通过Modbus RTU协议进行数据交互的能力,例如利用西门子smart200系列PLC进行通讯编程。
对于具体的编程实现,需要根据设备的使用手册和Modbus库文件来进行。
10h对应的十进制
本十六进制中的h是十六进制中的最后一位,由数字组成0-9及a(10)b(11)c(12)d(13)e(14)f(15)共16进制数。
十六进制0 10h在十
进制中就是16。
十六进制是把一个数分为两个部分,在十六进制中一个数可以代表比十
进制更大的数,比如十进制中123表示一百二十三,十六进制中123h表示
一百五十九,也就是123*16+11=159.
指令语言和机器语言常用十六进制来表示数字,它简洁,易记,能表达
比十进制更大的数。
此外,一些图像处理系统,很多技术文档里,都是采用
十六进制进行编码,有利于存储大量数据信息。
在数字计算中,十六进制也是使用很普遍的一种进制,根据十六进制和
其他进制的互转,我们可以得到十六进制中的10h对应的十进制数据为16。
1.设计任务用汇编语言实现闪烁文字的效果2.原理2.1题目功能分析(1)屏幕提示输入字符串;(2)输入完成后,字符动画显示颜色变化;(3)单击“Q”或“q”键退出程序。
2.2算法说明(1)屏幕提示输入字符串主要运用中断INT 21H的0A H功能;(2)颜色变化则通过INT 10H的09H功能循环调用实现;(3)退出功能通过将输入‘Q’和‘q’与其ASCII比较,跳转到退出程序;而退出程序主要通过INT 21H的4C H功能实现。
2.3.流程图图1字符串闪烁流程图3.程序说明3.1提示输入字符串显示功能实现屏幕提示输入字符串主要运用中断INT 21H的0A H功能,输入后回车则完成字符串在特定位置的显示。
lea dx,bufmov ah,0ahint 21hmov bx,2 ;mov di,0B1:mov al,buf[bx]cmp al,13 ;是否是回车?je AG1mov buff1[di],alinc bxinc dijmp B1AG1:mov ah,0mov al,2int 10h;OTHER:mov cx,0ffffh;AG:mov dh,7 ;hangmov dl,35 ;liemov ah,2mov bh,0 ;int 10h ;lea dx,buff1mov ah,9int 21h ;mov dh,7mov dl,35mov ah,2mov bh,0int 10h ;lea dx,buff2mov ah,9int 21h;sub cx,1 ;jnz AG ;3.2颜色变化功能实现颜色变化功能实现相当于对字符串属性定义,表现出颜色差别,然后循环调用并插入延时。
以下程序效果是三种颜色闪烁,其中aaa1表示白色,aaa2表示黑色,aaa3表示绿色,aaa4表示红色,aaa5表示紫色。
往复调用彩色和黑色,在各种颜色变换之间插入黑色即可实现彩色间断闪烁的效果。
具体程序如下:shanshuo: ;call aaa1 ;whitecall delay1call aaa2;blackcall delay1call aaa3 ;whitecall delay1call aaa2;blackcall delay1call aaa4 ;whitecall delay1call aaa2;blackcall delay1call aaa5 ;whitecall delay1call aaa2;blackcall delay1MOV AH,08h;Q,q键退出INT 21Hcmp AL,'Q'je exitcmp AL,'q'je exitjmp shanshuo3.3退出功能实现退出功能通过将输入‘Q’和‘q’与其ASCII比较,跳转到退出程序;mov ah,08h;q键退出int 21Hcmp AL,'Q'je exitcmp AL,'q'je exitexit: mov ah,4chint 21h3.4完整程序data segmentbuff1 db ' $'buff2 db ' $'buf db 100 dup('$')buff3 db 'please input a string !',13,10,'$'buff4 db 'Press Q or q to exit!',13,10,'$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,buff3;显示提示信息mov ah,09hint 21hlea dx,buff4;显示提示信息mov ah,09hint 21hlea dx,bufmov ah,0ahint 21hmov bx,2 ;多字符输入,回车结束,有效内容自第三个始。
1、显示服务(Video Service——INT 10H)
00H —设置显示器模式
01H —设置光标形状
02H —设置光标位置
03H —读取光标信息
04H —读取光笔位置
05H —设置显示页
06H、07H —初始化或滚屏
08H —读光标处的字符及其属性
09H —在光标处按指定属性显示字符
0AH —在当前光标处显示字符
0BH —设置调色板、背景色或边框
0CH —写图形象素
0DH —读图形象素
0EH —在Teletype模式下显示字符
0FH —读取显示器模式
10H —颜色
11H —字体
12H —显示器的配置
13H —在Teletype模式下显示字符串
1AH —读取/设置显示组合编码
1BH —读取功能/状态信息
1CH —保存/恢复显示器状态
(1)、功能00H
功能描述:设置显示器模式
入口参数:AH=00H
AL=显示器模式,见下表所示
出口参数:无
对于超级VGA显示卡,我们可用AX=4F02H和下列BX的值来设置其显示模式。
BX显示模式属性
100H:640×400 256色
(2)、功能01H
功能描述:设置光标形状
入口参数:AH=01H
CH低四位=光标的起始行
CL低四位=光标的终止行
出口参数:无
(3)、功能02H
功能描述:用文本坐标下设置光标位置
入口参数:AH=02H
BH=显示页码
DH=行(Y坐标)
DL=列(X坐标)
(4)、功能03H
功能描述:在文本坐标下,读取光标各种信息
入口参数:AH=03H
BH=显示页码
出口参数:CH=光标的起始行
CL=光标的终止行
DH=行(Y坐标)
DL=列(X坐标)
(5)、功能04H
功能描述:获取当前状态和光笔位置
入口参数:AH=04H
出口参数:AH=00h——光笔未按下/未触发,01h——光笔已按下/已触发
BX=象素列(图形X坐标)
CH=象素行(图形Y坐标,显示模式:04H~06H)
CX=象素行(图形Y坐标,显示模式:0DH~10H)
DH=字符行(文本Y坐标)
DL=字符列(文本X坐标)
(6)、功能05H
功能描述:设置显示页,即选择活动的显示页
入口参数:AH=05H
AL=显示页
对于CGA、EGA、MCGA和VGA,其显示页如下表所列:模式页数显示器类型
00H、01H0~7CGA、EGA、MCGA、VGA
02H、03H0~3CGA
02H、03H0~7EGA、MCGA、VGA
07H0~7EGA、VGA
0DH0~7EGA、VGA
0EH0~3EGA、VGA
0FH0~1EGA、VGA
10H0~1EGA、VGA
对于PCjr:
AL=80H——读取CRT/CPU页寄存器
81H——设置CPU页寄存器
82H——设置CRT页寄存器
83H——设置CRT/CPU页寄存器
BH=CRT页(子功能号82H和83H)
BL=CPU页(子功能号81H和83H)
出口参数:对于前者,无出口参数,但对PCjr在子功能80H~83H调用下,有:BH=CRT 页寄存器,BL=CPU页寄存器
(7)、功能06H和07H
功能描述:初始化屏幕或滚屏
入口参数:AH=06H——向上滚屏,07H——向下滚屏
AL=滚动行数(0——清窗口)
BH=空白区域的缺省属性
(CH、CL)=窗口的左上角位置(Y坐标,X坐标)
(DH、DL)=窗口的右下角位置(Y坐标,X坐标)
出口参数:无
(8)、功能08H
功能描述:读光标处的字符及其属性
入口参数:AH=08H
BH=显示页码
出口参数:AH=属性
AL=字符
(9)、功能09H
功能描述:在当前光标处按指定属性显示字符
入口参数:AH=09H
AL=字符
BH=显示页码
BL=属性(文本模式)或颜色(图形模式)
CX=重复输出字符的次数
出口参数:无
(10)、功能0AH
功能描述:在当前光标处按原有属性显示字符
入口参数:AH=0AH
AL=字符
BH=显示页码
BL=颜色(图形模式,仅适用于PCjr)
CX=重复输出字符的次数
出口参数:无
(11)、功能0BH
功能描述:设置调色板、背景色或边框
入口参数:AH=0BH
设置颜色:BH=00H,BL=颜色
选择调色板:BH=01H,BL=调色板(320×200、4种颜色的图形模式) 出口参数:无
(12)、功能0CH
功能描述:写图形象素
入口参数:AH=0CH
AL=象素值
BH=页码
(CX、DX)=图形坐标列(X)、行(Y)
出口参数:无
(13)、功能0DH
功能描述:读图形象素
入口参数:AH=0DH
BH=页码
(CX、DX)=图形坐标列(X)、行(Y)
出口参数:AL=象素值
(14)、功能0EH
功能描述:在Teletype模式下显示字符
入口参数:AH=0EH
AL=字符
BH=页码
BL=前景色(图形模式)
出口参数:无
(15)、功能0FH
功能描述:读取显示器模式
入口参数:AH=0FH
出口参数:AH=屏幕字符的列数
AL=显示模式(参见功能00H中的说明)
BH=页码
其子功能说明如下:
00H装入用户字体和可编程控制器
10H装入用户字体和可编程控制器
01H装入8×14 ROM字体和可编程控制器
11H装入8×14 ROM字体和可编程控制器
02H装入8×8 ROM字体和可编程控制器
12H装入8×8 ROM字体和可编程控制器
03H设置块指示器
04H装入8×16 ROM字体和可编程控制器
14H装入8×16 ROM字体和可编程控制器
20H设置INT 1Fh字体指针
21H为用户字体设置INT 43h
22H为8×14 ROM字体设置INT 43H
23H为8×8 ROM字体设置INT 43H
24H为8×16 ROM字体设置INT 43H
30H读取字体信息
(19)、功能13H
功能描述:在Teletype模式下显示字符串
入口参数:AH=13H
BH=页码
BL=属性(若AL=00H或01H)
CX=显示字符串长度
(DH、DL)=坐标(行、列)
ES:BP=显示字符串的地址AL=显示输出方式
0——字符串中只含显示字符,其显示属性在BL中。
显示后,光标位置不变1——字符串中只含显示字符,其显示属性在BL中。
显示后,光标位置改变。