首页
社区
课程
招聘
[旧帖] [求助]请教几个汇编问题 0.00雪花
发表于: 2010-7-12 23:29 1216

[旧帖] [求助]请教几个汇编问题 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直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
结束程序只是中断21h的一个功能。建议楼主看一下INT 21H各个功能号的说明。
AH=09h时INT 21h的功能为:
    输出一个字符串到标准输出设备上。如果输出操作被重定向,那么,将无法判断磁盘已满
    入口参数: AH=09H
      DS:DX=待输出字符的地址
    说明:待显示的字符串以’$’作为其结束标志
    出口参数: 无
因程序调用09h功能来显示字符串,故在定义时后面都以'$'结尾。

功能07H:
     从标准输入设备(如:键盘)读入一个字符。该中断在处理过程中将一直处于等待状态直到有字符可读为止。该输入还可被重定向,如果这样做,则无法判断文件是否已到文件尾
    入口参数: =07H,不过滤掉控制字符,不回显
    出口参数: AL=输入字符的ASCII码

功能02H:
    向标准输出设备(如:屏幕)输出一个字符。该输出还可被重定向,如果这样做,则将无法判断磁盘是否满
    入口参数: AH=02H
      DL=待输出字符的ASCII码
    出口参数: 无
2010-7-13 09:04
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我记得你哈。上次你也帮了解决了一个问题。
感谢你的热心啊!
原来都是中断,我还没看到那,
我在看那本汇编CHM,
大一还是大二学的汇编都忘得差不多了:(
2010-7-13 13:42
0
游客
登录 | 注册 方可回帖
返回
//