汇编 0ah的用法
来源:互联网 发布:java 数据库 增量同步 编辑:程序博客网 时间:2024/04/28 01:56
请解释一下字符串输入中的:"缓冲区第1字节事先填入最多要接收的字符个数,第2字节存放实际输入的字数".
buffer db 81 ;这是自己定义最多能输入81个字符吗?
db 0 ;为什么是0?
db 81 dup(0) ;为什么是‘0’不是‘?’
是不是调用此功能必须要指定最多能输入的字符数?
xt237这样编写为什么不对?
;xt237.asm
.model small
.stack
.data
array db 5
db 0
array1 db 5 dup(?)
array2 db 0dh,0ah,'$'
.code
.startup
mov ah,0ah
mov dx,offset array
int 21h
mov dx,offset array2
mov ah,09h
int 21h
mov bx,offset array1
again: mov al,[bx]
cmp al,'$'
jz done
cmp al,'a'
jb next
cmp al,'z'
ja next
sub al,20h
mov [bx],al
next: inc bx
jmp again
done: mov dx,offset array1
mov ah,09h
int 21h
.exit 0
end
数据段应该怎么定义才好
回复:
0AH号DOS功能调用要求如此安排数据缓冲区,否则无法正确执行该调用。缓冲区第1字节事先填入最多要接收的字符个数,在执行该调用时输入字符的实际个数将存放在该缓冲区的第2字节,所以定义时第2个字节位置可以任意(存放0当然可以)
buffer db 81 ;这是定义最多能输入81个字符,但包括最后的回车字符(所以有效输入字符为80个)
db 0 ;其他数值也可以,留下此字节位置就可以
db 81 dup(0) ;是‘0’或‘?’均可,只要留出空间就可以
习题2.37程序编写得很好,就是array定义的数据过小,只能输入4个字符。所以,将其改大,例如255就更好了。
array db 255
db 0
db 255 dup(?)
钱老师,你说我的程序xt237.asm没有错误,但是在实际运行的过程中发现了如下问题,请您解释一下
1,书上说 调用0AH(字符串输入)功能的时候,当输入的字符数多于定义数时,多出的字符被丢掉,就本题来说,但是实际输入的时候,多输是不可能的,定义3个字符实际只能输入3个(包括回车)再按键盘时,计算机不会接受字符,发出‘滴’声,屏幕也不会显示你的按键。
2:就本题,定义最大字符数时,比如定义3个,用于存放的也定义3个(即:buffer db 3
db 0
db 3 dup(?))
当实际输入为1个字符的时候,转换结果不显示,
当实际输入为2个时,全部显示
定义最大字符数为5的时候,输入1-2个字符,转换结果不显示
输入3个字符,显示后2个,输入4个时全部显示
定义最大字符为81时,输入60个字符,前19个不显示
这是为什么呀?(我在98和XP下分别运行的)
回复:
1. 书上说 调用0AH(字符串输入)功能的时候,当输入的字符数多于定义数时,多出的字符被丢掉,就本题来说,但是实际输入的时候,多输是不可能的,定义3个字符实际只能输入3个(包括回车)再按键盘时,计算机不会接受字符,发出‘滴’声,屏幕也不会显示你的按键。----这就是“多出的字符被丢掉”的结果。
2.就本题,忽略了一个小问题,请将“db 5 dup(?)”中的问号改为'$'就没有你所说的现象了。原因是用09H功能输出时遇到回车0DH将光标设置到该行首列,后面是0(汇编程序将不赋初值的?设置为0)将刚才输出的字符删除了。例如输入一个字母a、回车。buffer内容依次是05 01 61 0D 00 00 00。
- 汇编 0ah的用法
- 汇编--21H里头0ah功能的使用示例
- 汇编原理3:分析ah=4ah时的int 21h
- 反汇编直接数转换为KEIL环境格式(#5AH ->#0x5A
- INT21H的0Ah号功能实现原理
- 嵌入汇编的用法
- sub cl,'A' - 0ah
- gcc中内嵌汇编的用法
- int 0x13 的扩展读(ah = 0x42)
- ARM SRS汇编指令的用法
- 汇编 in out的用法示例
- 网络的经济基础篇-之三-AH、ESP
- AH flash
- 802.11ah
- AH大佬
- struts2 中select标签的用法 总结《网上汇编的》
- 汇编里 PTR 用法
- 汇编EXTERN用法
- android service 权限问题
- 触摸屏知识 学习:老古论坛
- Linux技巧:使用Fsck命令修复损坏的分区
- 完美解决在ModalPopupExtender中使用CalendarExtender时被层遮挡的问题
- XManager登录Linux
- 汇编 0ah的用法
- ACCESS数据库中日期类型在编程中的问题
- 条形码考勤系统解决方案
- 中文乱码问题
- 解决office2007安装程序找不到office.zh-cn/Setup.xml OFFICELR.CAB OFFICEMUI.MSI OFFICEMUI.XML SETUP.XML
- 段错误bug的调试
- 学习IBatisNet + Castle
- innerText 和innerHTML的区别
- Java垃圾收集算法