-
-
[旧帖]
[求助]请教几个汇编问题
0.00雪花
-
发表于:
2010-7-12 23:29
1216
-
例6.12 显示9个数字字母'1'~'9',26个大写字母,和显示任意输入的数字字符,并用按“回车”键来结束本程序的运行。
解:
DATA1 SEGMENT
MSG1 DB 13, 10, "Iteration: "
NUM1 DB '1', "$"
MSG2 DB 13, 10, "Alphabet: $" ;
$是什么作用?看过忘记了:)
NUM2 DB 'A', " $"
MSG3 DB 13, 10, "Type digits, then press ENTER: $"
DATA1 ENDS
CODE1 SEGMENT
ASSUME CS:CODE1, DS:DATA1
START: MOV AX, DATA1
MOV DS, AX
MOV CX, 9
MOV AH, 09H
MOV DX, OFFSET MSG1
.REPEAT
INT 21H
;可以详细解释下中断21吗?不是说结束程序吗?
INC NUM1 ;显示Iteration: 1,2,~,9
;哪里控制显示?把哪里的寄存器的内容显示出来?
.UNTILCXZ
MOV DX, OFFSET MSG2
INT 21H ;显示字符串"Alphabet:"
MOV AH, 09H
MOV DX, OFFSET NUM2
.REPEAT
INT 21H
INC NUM2 ;显示当前字母
;当前字母向后移
.UNTIL NUM2 > 'Z' ;显示整个大写字母表
MOV AH, 09H
MOV DX, OFFSET MSG3
INT 21H
.WHILE 1 ;循环条件为永真的循环
MOV AH, 07H ;
不明白这句的作用。
INT 21H ;不带回显地从键盘读一个字符
.BREAK .IF AL == 13 ;如果输入“回车”键,则终止循环
.CONTINUE .IF (AL<'0') || (AL>'9') ;如果字符不是数字字符,则继续循环
MOV DL, AL ;
输入的东西是放到AL里?转到DL意图是?
MOV AH, 02H
;这句也不明白。
INT 21H ;显示所输入的数字字母
.ENDW
MOV AX, 4C00H
INT 21H
CODE1 ENDS
END START
先谢谢你的回答!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课