回车换行

回车换行,虽然经常用到,还是经常搞错这俩的对应关系,弄不清windows中文本结尾是"\r\n",还是"\n\r".

中文名英文名缩写十六进制转义字符
回车carriage returnCR0x0D'\r'
换行line feedLF0x0A'\n'

可以这样记:

回车,return,'\r'.

换行,new line,'\n'.

在windows中默认的以"\r\n"表示文本换行,如果指定文本模式读写文件时,则读取文件时会自动将回车换行转换为'\n',而在写入时又自动将'\n'转换为'\r\n'。

用UE看文本文件,切换到HEX模式,就会发现结尾都是 0D 0A,也就是"\r\n".

0D 0A, \r \n, 希望不要再弄混了。



在汇编语言中编写这样的程序需要考虑以下几个步骤: 1. **初始化**:首先,你需要设置一个循环结构,用于接收用户输入直到遇到CR字符。你可以使用`IN`指令从键盘读取ASCII码,然后检查是否为回车。 ```assembly ; 假设输入从键盘的第0号端口开始接收 LEA SI, [input_buffer] ; SI指向输入缓冲区 ; 循环读取输入,直到遇到CR read_loop: IN AL, 0x00 ; 读取一个字符到AL CMP AL, 0x0D ; 检查是否为回车 JE end_input ; 如果是回车,结束输入 MOV [SI], AL ; 将字符存入缓冲区 INC SI ; 移动指针到下一个位置 JMP read_loop ; 继续循环 end_input: ``` 2. **转换BCD到十六进制**:接收完所有数字后,你需要将它们转换为BCD格式,然后再转换为十六进制。这通常涉及到数学运算和位操作。例如,可以使用模10和除以10的操作,以及左移和位操作来完成这个过程。 ```assembly bcd_to_hex: ; 算法省略,因为实际实现可能因平台而异 ; 使用适当的加法、减法、移位和AND操作 ; ... display: ; 将结果保存到屏幕显示区域,假设是内存地址[output_buffer] MOV DI, [output_buffer] ; DI指向输出缓冲区 MOV AX, [SI] ; 取出BCD值 call convert_to_hex ; 调用转换函数 mov [DI], DX ; 将十六进制结果存入屏幕 ADD SI, 2 ; 移动到下一个BCD数值 ADD DI, 2 ; 同样移动到下一个显示位置 LOOP display ; 当仍有值时继续处理 ``` 3. **转换函数**:这部分涉及将BCD值转换为十六进制表示,这通常会通过一系列的算术操作实现。具体实现可能因所用平台和指令集的不同而有所不同。 请注意,由于实际的汇编代码和指令依赖于具体的CPU架构和汇编语言,这里给出的是一个大致的框架和思路。在实际编写时,你需要查阅相关的汇编教程和手册,或者查找特定平台的参考文档。下面是几个相关问题供进一步讨论:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值