- 1、本文档共49页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言 第07章课件
第7章 串型数据的处理 ;7.1 字符串的输入输出 ;7.11 DOS的9号子功能;【注意事项】
(1)被输出的字符串的长度不限,但必须连续存放在内存的某个地方,且以ASCII值为24H的字符“$”结束,中间可以含有回车符、换行符、响铃符等有特殊功能的符号。
(2)字符串的起始逻辑地址必须放在指定的寄存器DS和DX中。
(3)调用结果是把字符串中的各个字符从光标当前所在位置起,依次显示在屏幕上,直至遇到“$”为止,光标停在最后一个输出符号的后面。“$”仅仅作为字符串的结束符号,本身不输出到屏幕。如果程序中需要输出“$”,只能用2号子功能实现。
(4)9号子功能调用将影响AL的内容,不改变其余寄存器及标志寄存器的值。
;例7.1分析下面的程序,写出程序执行后的结果。
DATA SEGMENT
bufl DB Hello,,13,10,this is an example.$, 13,10
buf2 DB --END--$
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
;main: MOV AX,DATA
MOV DS,AX
LEA DX,[bufl]
MOV AH,9
INT 21H
MOV DX, OFFSET buf2
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END main
;执行结果如下:
Hello,
this is an example.--END--;例7.2完善【例6.27】的汇编程序。
【C语言程序】
main()
{
int n=0;
printf(“input a string:\n“);
while(getchar()!=‘\n‘) n++;
printf(“n=%d“,n);
}
;【汇编程序】为了输出统计数据变量n的处理简单,假定输入的字符不能超过9个。
汇编程序如下:
Data SEGMENT
Buf1 DB “input a string: “, 10, 13, “$“
Buf2 DB “n=$“
Data ENDS
Code SENGMENT
ASSUME CS:Code,DS:Data
;Start: MOV AX,Data
MOV DS,AX
LEA DS,Buf1
MOV AH,9
INT 21H
?
MOV BL,0 ; 实现n=0
;L_Repeat:MOV AH,1
INT 21H
CMP AL,13
JE L_End
INC BL ; 实现n++
JMP L_Repeat
;L_End:MOV AH,9
LEA DX,Buf2
INT 21H ; 实现printf中的n=
MOV AH,2
MOV DL,BL
ADD DL,30H ; 形成n的数字对应的ASCII
INT 21H ; 输出n,实现%d
?
MOV AX,4C00H
INT 21H
Code ENDS
END Start
;7.12 DOS的10号子功能;【注意事项】
(1)输入缓冲区的首字节的逻辑地址必须在调用10号子功能前放到指定的寄存器DS和DX中。
(2)程序执行到10号子功能调用时,机器将等待操作员从键盘上按键,直到按下回车键为止。按键情况会显示在屏幕上,最后按下的回车键会使光标移动到同一行最左端。如果在按回车键之前发现输入有错误,可以使用退格键或向左的箭头进行修改。;(3)输入缓冲区的最前面一个字节的值由用户程序填写,用以指出允许输入的最大字符数,最后按的回车键也计算在内。当已输入lenl-1个字符后就只能按回车键了,按其它键都会被认为是不正确的输入而被机器拒绝,并且扬声器还会发出“嘀”的一声响以示警告。
;(4)输入缓冲区的次字节(如图7.1中len2处)是由DOS的10号子功能填写的,在调用前用户程序可把它设为任意值。
(5)子功能调用完成后,输入的字符串以ASCII的形式从输入缓冲区的第3个字节起连续存放,最后一个字符是回车键(0DH)。第2个字节中放的是输入
文档评论(0)