主题:紧急求助:这个程序是什么意思,现在就需要解决,小女子感激不尽
heyuan728
[专家分:0] 发布于 2007-12-04 21:13:00
code segment
assume cs: code
main proc far
start:
push ds
mov ax, 0
push ax
mov ah, 1
int 21h
sub al, 30h
cmp al, 0
jz exit
mov cl, al
mov ch, 0
again:
mov ah, 2
mov dl, 7
int 21h
loop again
exit:
ret
main endp
code ends
end start
回复列表 (共7个回复)
沙发
sqianqian [专家分:0] 发布于 2007-12-05 17:09:00
这个程序有很多语法错误。比如MOV AH,后面的数字没有加H。
楼主这个程序想表达的东西很混乱
mov ah, 1
int 21h
sub al, 30h
cmp al, 0
jz exit
mov cl, al
mov ch, 0
这段是把自己输入的ASCII码减30H后和0比较 如果不等于0则把这个数装入CX用于作为循环次数。
again:
mov ah, 2
mov dl, 7
int 21h
loop again
这段是不停的显示7这个数字。共CX次。所以我没看懂这个程序要表达什么。。。。
板凳
ccpp [专家分:9360] 发布于 2007-12-05 18:39:00
code segment
assume cs: code
main proc far
start:
push ds
mov ax, 0
push ax
mov ah, 1
int 21h -------中断从键盘 读取一个字符(需要的是数字,比如'3')到 al
sub al, 30h -------提取数字字符 的值 (比如3)
cmp al, 0
jz exit --------- 数字字符为0 则结束循环
mov cl, al -------- 设置循环,CX=输入的次数
mov ch, 0
again:
mov ah, 2
mov dl, 7 --------循环要显示的 asc 2 码,7看来不是一个可显示的字符
int 21h
loop again
exit:
ret
main endp
code ends
end start
3 楼
heyuan728 [专家分:0] 发布于 2007-12-15 18:34:00
据我所致这个好像MOV 后面那数字不需要加H了,在上机实践的时候,都已经是默认的为十六进制数了,
至于这个程序现在是什么意思我还是不知道呢
4 楼
heyuan728 [专家分:0] 发布于 2007-12-15 18:45:00
还是希望有进一步的解释,谢谢!
5 楼
ccpp [专家分:9360] 发布于 2007-12-18 11:11:00
[quote]据我所致这个好像MOV 后面那数字不需要加H了,在上机实践的时候,都已经是默认的为十六进制数了,
至于这个程序现在是什么意思我还是不知道呢
[/quote]
那是在debug命令下,
.asm文件里默认的是 10进制
6 楼
heyuan728 [专家分:0] 发布于 2007-12-18 13:57:00
[quote][quote]据我所致这个好像MOV 后面那数字不需要加H了,在上机实践的时候,都已经是默认的为十六进制数了,
至于这个程序现在是什么意思我还是不知道呢
[/quote]
那是在debug命令下,
.asm文件里默认的是 10进制
[/quote]
7 楼
heyuan728 [专家分:0] 发布于 2007-12-18 13:59:00
[quote][quote]据我所致这个好像MOV 后面那数字不需要加H了,在上机实践的时候,都已经是默认的为十六进制数了,
至于这个程序现在是什么意思我还是不知道呢
[/quote]
那是在debug命令下,
.asm文件里默认的是 10进制
[/quote]
恩,我是想说这个意思,这个程序能做怎么样的修改,得到一个什么样的结果!
감사합니다!
我来回复