求大神解释这个汇编语句
data segmentlenmaxdb3
actlendb?
stringdb 20dup(?)
data ends
code segment
assumeds:data,cs:code
start: mov ax,data
mov ds,ax
lea dx,lenmax
mov AH,0AH
INT 21H
mov dl,al
mov ah,9
int 21h
MOV AH,4CH
INT 21H
code ends
end
data segment ;定义数据段
lenmaxdb3 ;定义3个字节
actlendb?
stringdb 20dup(?) ;给定20个字节的空间
data ends
code segment ;定义代码段
assumeds:data,cs:code ;data表示ds段;code表示cs段
start: mov ax,data ;将data段的首地址放到ax里面
mov ds,ax ;这里也就是讲data的首地址放到ds段寄存器里面
lea dx,lenmax ;将lenmax的地址放到dx里面,用来存放输入的数据
mov AH,0AH ;调用0AH号DOS系统功能调用,执行一次命令行输入。
INT 21H
mov dl,al ;将al的地址放到dl中,这里是将要输出的数据
mov ah,9 ;是输出字符串功能
int 21h ;这里是调用dos21号功能
MOV AH,4CH
INT 21H
code ends
end 青玄 发表于 2014-4-15 16:07 static/image/common/back.gif
data segment ;定义数据段
lenmaxdb3 ;定义3个字节
actlendb?
这个程序可以输入3个字符吗?还是两个? 大黑鱼 发表于 2014-4-15 16:36 static/image/common/back.gif
这个程序可以输入3个字符吗?还是两个?
只能输出2个字符,因为我想是这样的:你定义了3个字节的数据,而后面还有一个默认的结尾字符0,也就是这样的:lenmaxdb?,?,0 不然的话,程序就不知道怎么结尾了! 青玄 发表于 2014-4-15 16:44 static/image/common/back.gif
只能输出2个字符,因为我想是这样的:你定义了3个字节的数据,而后面还有一个默认的结尾字符0,也就是这样 ...
我觉得也应该是两个,但是我试了一下为什么可以显示三个呢? 大黑鱼 发表于 2014-4-15 18:04 static/image/common/back.gif
我觉得也应该是两个,但是我试了一下为什么可以显示三个呢?
咦!我的上面是两个啊!只能输入两个,再输入的话,就输不进去了!嗯...,你用的是那个版本的编译器啊!我用的是masm5.0的版本!
页:
[1]