汇编小记

来源:互联网 发布:阿里云注销 编辑:程序博客网 时间:2024/05/01 11:00

汇编语言的"回车"和“换行”

回车键的历史:
关于“回车键”的来历,还得从机械的英文打字机说起。在打字机上,有一个部件叫“字车”,每输入一个单词,“字车”就前进一格。当输满一行后,使用者就要推动“字车”到起始位置,这时打字机会有两个动作:“字车”归位、滚筒上卷一行(相当于“字车”下移一行),以便开始输入下一行,这中推动“字车”的动作叫“回车”。后来,在电动的打字机上,人们增加了一个直接起“回车”作用的键,被称为“回车键”。在现今的电脑键盘上,“回车键”上曾使用过“CR”、“RETURN”的字样,后来才统一确定为“Enter”。

维基百科是这样解释换行的:

换行(英语:newline,Line break,end-of-line(EOL)),在计算机领域中是一种加在文字最后位置的特殊字符,在换行字符的下一个字符将会出现在下一行,实际上换行字符根据不同的硬件平台或操作系统平台会有不同的编码方式。

换行字符可以看作是行的结束符,也可以看作行之间的分隔符,这两种处理方式之间存在一些歧义。如果换行字符被当作分隔符,那么文件的最后一行就不需要再有换行字符。但是多数系统的做法是在最后一行的后面也加上一个换行字符,也就是把换行字符看作是行的结束符。这样的程序在处理末行没有换行字符的文件时,可能会存在问题。相反地,有的程序把换行符看作分隔符,就会把最末尾的换行字符看作是新行的开始,也就是多出了一个空行

和同学复习时,在MASM上编写时对回车换行产生的好奇,之前认识太肤浅了,一直感觉差别不大。

习题2.25 编写一个程序段:先提示输入数字“Input Number:0-9”,然后在下一行显示输入的数字,结束;如果不是键入了0-9数字,就提示错误“Error!”,继续等待输入数字。

这么简单的一个程序,竟然洋洋洒洒的学了一下午,每个点每个细节地挖,结果发现,核心知识点也就那么几条,我也是醉了。。。

;weijixt2.25.model small.stack.datamsgkey db "input number 0-9",0dh,0ah,'$'msgwrg db "error",0dh,0ah,'$'.codestart:      mov ax,@data;程序开始点      mov ds,ax;设置DS指向用户定义的数据段(@data表示数据段)      again:    mov ah,09H;输出字符串          mov dx,offset msgkey          int 21H            mov ah,01H;输入一个字符,al=输入字符的ASCII          int 21H          mov dh,al  ;暂存输入字符                           cmp al,30H;0-9外显示错误          jb disp          cmp al,39H          ja disp                    call crlf          mov ah,02H;输入满足要求显示该字符  mov dl,dh          int 21H          jmp done;结束disp:               call crlf          mov ah,09H;提示错误  mov dx,offset msgwrg          int 21H          jmp again;返回,重新提示输入done:       mov ax ,4c00h  int 21h  crlfprocpush axpush dxmov ah,02hmov dl,0dhint 21hmov ah,02hmov dl,0ahint 21hpop dxpop axretcrlf endpend start
简化段定义格式、ASCII码表、子程序格式、堆栈操作、数据保护、中断返回、回车换行、系统功能调用……

真是有意思,有空再继续纠缠。


0 0
原创粉丝点击