回 帖 发 新 帖 刷新版面

主题:紧急求助:这个程序是什么意思,现在就需要解决,小女子感激不尽

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个回复)

沙发

这个程序有很多语法错误。比如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次。所以我没看懂这个程序要表达什么。。。。

板凳

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 楼

据我所致这个好像MOV 后面那数字不需要加H了,在上机实践的时候,都已经是默认的为十六进制数了,
至于这个程序现在是什么意思我还是不知道呢

4 楼


还是希望有进一步的解释,谢谢!

5 楼

[quote]据我所致这个好像MOV 后面那数字不需要加H了,在上机实践的时候,都已经是默认的为十六进制数了,
至于这个程序现在是什么意思我还是不知道呢
[/quote]

那是在debug命令下,
.asm文件里默认的是 10进制

6 楼

[quote][quote]据我所致这个好像MOV 后面那数字不需要加H了,在上机实践的时候,都已经是默认的为十六进制数了,
至于这个程序现在是什么意思我还是不知道呢
[/quote]

那是在debug命令下,
.asm文件里默认的是 10进制
[/quote]

7 楼

[quote][quote]据我所致这个好像MOV 后面那数字不需要加H了,在上机实践的时候,都已经是默认的为十六进制数了,
至于这个程序现在是什么意思我还是不知道呢
[/quote]

那是在debug命令下,
.asm文件里默认的是 10进制
[/quote]

恩,我是想说这个意思,这个程序能做怎么样的修改,得到一个什么样的结果!
감사합니다!

我来回复

您尚未登录,请登录后再回复。点此登录或注册