| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1005 人关注过本帖
标题:[求助]这里AL的值怎么变化的?
只看楼主 加入收藏
hero2007
Rank: 1
来 自:湖北武汉
等 级:新手上路
威 望:1
帖 子:130
专家分:0
注 册:2007-3-22
收藏
 问题点数:0 回复次数:2 
[求助]这里AL的值怎么变化的?

DATAS SEGMENT
TAB DB 12H,83H,00H,0ABH,3AH,2CH,98H,0BEH,0B1H,0B2H,45H,65H,0DCH,88H,0DCH,88H,0DCH,88H
RESULT DB 100 DUP(?)
COUNT =RESULT-TAB
DATAS ENDS

STACKS SEGMENT
DB 200 DUP(?)
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX

MOV AL,0
MOV CX,COUNT
LEA SI,TAB
LEA DI,RESULT

AGAIN: TEST BYTE PTR[SI],80H
JNZ A
MOV DL,BYTE PTR[SI]
MOV [DI],DL
INC SI
INC DI
LOOP AGAIN
JMP OUTA

A: INC AL
NEG BYTE PTR[SI]
MOV DL,BYTE PTR[SI]
MOV [DI],DL
INC SI
INC DI
LOOP AGAIN

OUTA: ADD AL,30H
CMP AL,39H
JA B
MOV AH,2
MOV DL,AL
INT 21H
JMP EXIT
B: ADD AL,07H

MOV DL,'0'
MOV AH,2
INT 21H

MOV AH,0
MOV DL,0
MOV AH,2
MOV DL,AL
INT 21H

MOV AH,2
MOV DL,'H'
INT 21H



EXIT: MOV AH,4CH
INT 21H
CODES ENDS
END START

为什么输出结果是00H,而不是0CH ?

如果改成:

B: ADD AL,07H
MOV BL,AL
MOV DL,'0'
MOV AH,2
INT 21H

MOV AH,0
MOV DL,0
MOV AH,2
MOV DL,BL
INT 21H

MOV AH,2
MOV DL,'H'
INT 21H

就能输出0CH

这里的AL的值怎么受到
MOV DL,'0'
MOV AH,2
INT 21H
影响而变为30H的?





搜索更多相关主题的帖子: STACKS SEGMENT MOV DATAS RESULT 
2007-10-09 09:17
aoaoaoao
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-5-14
收藏
得分:0 
中断int 21H的2 有返回值放在al中,返回值是最后输出的字符



MOV DL,'0'
MOV AH,2
INT 21H
后 al的值被改写成'0'了..
2007-10-09 12:19
justholdon
Rank: 1
等 级:新手上路
威 望:2
帖 子:69
专家分:0
注 册:2007-4-23
收藏
得分:0 
MOV AH,2
INT 21H
02号功能会改变al的值,所以用时要保存一下al的值!

just hold on !
2007-10-26 12:35
快速回复:[求助]这里AL的值怎么变化的?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037967 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved