汇编 0ah的用法

请解释一下字符串输入中的:"缓冲区第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。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值