马丁的两个近似问题1关于0dh和0ah问题2.关于ASC码前32个

softheaven 2006-02-05 03:15:12
经常看到这样的子程序
crlf proc near
push ax
mov ah,2
mov dl,0dh ;return
int 21h
mov dl,0ah ;change line
int 21h
pop ax
ret
crlf endp
程序的目的就是为了换行,为什么不直接,mov dl,0ah, int 21h 反而要
先mov dl,0dh int 21h 这样做不是多于么。
也就是mov dl,0dh int 21h 真正的目的是为了什么?或者说为什么要回车呢
回车的具体意思是什么,它如果单独用,用在那。
我们在98 MS_DOS 里按下回车,系统的理解是什么?是仅仅回车,还是回车加
换行。如果c:>dir 然后一个回车,系统又是怎么处理的呢 ?
兄弟能否给个详解呢 ?


ASCII 码从0至31号,每个字符有两种属性,一个是字符,还有一个控制字符。
我现在的问题是,字符属性好理解,他提控制字符怎么理解,主要用在那方面
比如27号字符,它的字符属性是‘<-’也就是一个指问左边的光标, 现在要问
的是它的控制字符是ESC,键盘上的左上角的ESC键,一般在软件中都是用做
退出来使的,我现在的问题,为什么0-31这些ASCII码字符,要设计成这样。
这个设计,主要用在那方面,也就是这样设计的优势在那里,
怎么才能快速理解,设计者的初终。也就是,设计的出发点是什么?

...全文
1451 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
softheaven 2006-05-28
  • 打赏
  • 举报
回复
兄弟,不好意思,令天结了.
Gogogogogoogle 2006-04-04
  • 打赏
  • 举报
回复
http://www.edacn.net/bbs/get.php?id=23516
fhb13 2006-04-03
  • 打赏
  • 举报
回复
昏 6月
你这个帖子早该结了,问题一楼都已经解决了
softheaven 2006-04-03
  • 打赏
  • 举报
回复
兄弟们,我在深圳出差。看来,四五份之内是回不去了。

只有,6月分结了。
绝不食言。当然了,兄弟们,如果还有,对此发表高见的,请继续。

大分送上。
softheaven 2006-03-15
  • 打赏
  • 举报
回复
兄弟们,我现在,还在外地,深圳,回去后,就结贴,不好意思了

我现在真的,没法结,上网的时间有限,而且我还想把这些东西总结一下,并保存。
四月中旬结这个帖子。


MrPotter 2006-02-24
  • 打赏
  • 举报
回复
0ah可以换行,0dh是回车,这是习惯,就象C语言里printf("\r\n");一样,在UNIX就可以不用\r了
softheaven 2006-02-19
  • 打赏
  • 举报
回复
zara兄,我现在,在外地,结贴不方便,等,我回到家了。
认真看看,然后结个贴,反正是谢了,ZARA兄,还有黄兄。
zara 2006-02-12
  • 打赏
  • 举报
回复
;
; 下面的程序, 先显示一个提示, 再在当前光标的位置, 显示 4 个 0dh 字符表示的
; 特殊符号, 等待按键, 然后显示 0dh 回车将光标移动到行首, 这个是其控制功能
; 的表现, 最后等待一个按键以结束程序
; 需 Masm6: 直接运行 ml 进行编译链接就可以了
;

.model tiny

_TEXT segment 'CODE'

org 100h

assume cs:_TEXT

start::
mov ah, 9
mov dx, offset msg
int 21h

mov ah, 0fh
int 10h ; get current display page
mov ah, 0ah ; write character at current position
mov al, 0dh ; the character to go
mov cx, 4 ; number of times to write character
int 10h ; go

mov ah, 0
int 16h ; waits for a press to continue

mov ah, 0eh ; Teletype output character
mov al, 0dh ; the same character as above
int 10h ; cursor moves to the first character position

mov ah, 0
int 16h ; waits for a press to end up

mov ah, 4ch
int 21h ; program terminated

msg db 'Graphic mode: ', '$'

_TEXT ends

end start
softheaven 2006-02-12
  • 打赏
  • 举报
回复
那黄兄,unicode 在你写表中,所处于那个位置。烦详说一下,
还有zara 兄,快出来阿,把这个问题的最后面说清楚 ok??
softheaven 2006-02-12
  • 打赏
  • 举报
回复
黄兄的解释,我还没看懂。繁说一下。
hswxf 2006-02-10
  • 打赏
  • 举报
回复
建议楼主还是多看点资料

机器码------>ASCII码------>助记符------->命令参数(元)------->各种文字(人类习惯字符)
--------- -------- --------.................
| | | ................
-------- ---------- 太多.......
| | | |....| ......
符号 指令 命令 指令..哑元
(这里是不是)
(你说的双重性?)
好累
softheaven 2006-02-09
  • 打赏
  • 举报
回复
我这理解对不对,ASCII前32个(0-31)双重性问题,是由于当时机器能力的限止,和时代发展的产物。
就是就为了充份利用资源。打个比方,比如,在我们事先归定,如果当时晴天,我打电话响一声就挂
表明我在这里很好。如果当开下雨,我打电话响一声就挂,表明我缺钱。如果当天下雨,我打电话响
一声你就挂,表明我当天做飞机,要回来。如果.......


---即,双重性设计,在使用的时要,知道相互调用约定.有没有专们介绍这个双重性问题的资料.
就是要有代码说明问题的.

那我还有一问.能不否举个同一个(0-31)ASCII字符,双重属性的,使用例子,越经典越好.
当然是个org 100h ,短小,又能说明问题的例子.关键放在控制字符上,比如,他打的的图形表示.
然后在表现其控制字符表示.

//把第二个问题重点说一下,就是ASCII前32个字符双重性的问题

由于:
1.现在都是图形操作系统了
2.远程通信习惯了二进制协议
3.Unicode标准正在流行

还有这样回答问题的上面的兄弟,能不能讲清楚点,我有不明,或是能里有资料,让我看一下.
zara 2006-02-07
  • 打赏
  • 举报
回复
其实, 相比较而言, 图形字符属性用得更少吧, 只限于 dos 系统下了.
作为控制功能, 其中很多的功能不是用在电脑的显示功能上的, 而是在电传打印之类的, 象垂直制表 (0bh) 和换页 (0ch) 等等. 但其中的一些常见的控制功能, 如水平制表 (09h), 回车 (0dh), 换行 (0ah), 响铃 (07h) 等是一直在使用的.
就图形字符属性而言, 由于编码标准扩展更新和操作系统的支持, 特殊图形的表示在现在的系统上往往是通过使用专门的字体, 以及扩展的编码空间来实现的, 而且更加的丰富多彩. 现在的 Windows 系统, 也没有了再现 0-31 区间的图形字符的功能, 这样在显示功能上就一致了, 不会再有歧义.

可以参考 http://office.microsoft.com/zh-cn/assistance/HA011331362052.aspx
展开相应的链接可以看到更详细的内容
zyl910 2006-02-06
  • 打赏
  • 举报
回复
//把第二个问题重点说一下,就是ASCII前32个字符双重性的问题

由于:
1.现在都是图形操作系统了
2.远程通信习惯了二进制协议
3.Unicode标准正在流行


ASCII前32个字符的控制作用越来越少用到了
现在经常用到的只有这些:
00:字符串终止符
0d 0a:文本中的换行符
sjjf 2006-02-06
  • 打赏
  • 举报
回复
mark
zara 2006-02-06
  • 打赏
  • 举报
回复
这个问题, 其实也简单, 就是在不同的显示功能调用是, 这部分代码会有不同的输出. 一种是将其作为功能字符来解释输出的, 如 int10h 的 0eh 功能; 另外一种就是以特殊图形字符的形式, 如 int10h 的 0ah 功能. 控制功能的具体内容, 在汇编上的附录都会有的吧. 图形的表示形式, 可以在 debug 下用 f 命令来查看: f b800:0 l a0 0d 07 将屏幕第一行用 0d 图形字符填满, 07 是属性, 即普通的黑色背景, 浅白色文字
softheaven 2006-02-06
  • 打赏
  • 举报
回复
Zara 兄,把第二个问题重点说一下,就是ASCII前32个字符双重性的问题。
其它兄弟知道的,也可以说一下OK??
NeoZero 2006-02-05
  • 打赏
  • 举报
回复
你要看具体的操作系统,他的串设备输入的如何解释的。对于同一个输入的Ascii码在终端中可以有千变万化的显示方式。
hswxf 2006-02-05
  • 打赏
  • 举报
回复
ASCII本身并不具有二重属性,只是在操作系统中,它可以有不同的功能,这种设计是由编码的有效性原则决定的
回车和换行在ASCII看来是一个意义,回车也就是ENTER(进入)的意思,这个表达是可以用C语言也可以用其它语言,最直接的是用X86汇编,也就是用 0dh 表示,但严格限制在DOS等系统中,也就是INT21H中断所表示的!换行的道理一样!
这没什么不好理解的,高效性是编码设计的原则,一码多用是现代编码的重要功能!

zara 2006-02-05
  • 打赏
  • 举报
回复
回车和换行, 严格来说是两个概念. 回车, 就是光标回到当前行的行首, 列变行不变; 换行, 就是光标移动到下一行的当前列的位置, 行变列不变. 这样的设计应该是来源于打字机吧, 可以取得叠加打印效果, 可以获得一些特殊打印效果. 所以, 要使得光标移动到下一行的行首, 一般就是要连着输出回车和换行了. 在高级语句的些输出语句中, 为了简约, 会用一个换行来表示 "回车+换行", 比如 c 的 printf 语句.

ASCII 的0-31 字符的两重属性, 是由于 ASCII 的范围有限, 原始的定义只有 7 位, 128 个吧, 在需要特殊图形符号时, 就只有定义到前面的原来用于控制字符上了, 这个控制字符的最初设定也是来源于打字机的. 在计算机的显示中, 这些字符究竟是作为图形字符, 还是控制字符, 往往是通过不同的显示功能来区分的, 比如 int10h 的 0eh 显示功能, 会解释控制字符, 0dh 作为回车, 等等; 而 0ah 显示功能就不会这样, 只会把 0dh 作为一个图形来显示, 是个音乐符号吧

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧