| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1083 人关注过本帖
标题:有关循环输入的问题!
只看楼主 加入收藏
syuanq
Rank: 2
等 级:新手上路
威 望:3
帖 子:297
专家分:0
注 册:2006-12-11
结帖率:0
收藏
 问题点数:0 回复次数:13 
有关循环输入的问题!
请问怎样实现循环输入十个数,然后输出结果
搜索更多相关主题的帖子: 输入 结果 输出 
2006-12-21 11:20
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
收藏
得分:0 
一个直接用字符形式输入
例如:
......
NUM DB 10 DUP(?)
......
MOV CX,10
MOV AH,1
LEA BX,NUM
NEXT0: INT 21H
MOV [BX],AL
LOOP NEXT0
MOV CX,10
NEXT1: LEA BX,NUM
MOV DL,[BX]
INT 21H
LOOP NEXT1
......

或者用字符串形式输入
例如:
......
NUM DB 11,0,12 DUP('$') ;注意这里的数值,原因估计大伙都知道啦,不清楚的话可以上机调试
......
MOV AH,10
LEA DX,NUM
INT 21H
MOV AH,9
LEA DX,NUM+2
INT 21H
......

我是金子,我要闪光的
2006-12-21 13:45
syuanq
Rank: 2
等 级:新手上路
威 望:3
帖 子:297
专家分:0
注 册:2006-12-11
收藏
得分:0 

谢谢啦


[url]www.[/url]欢迎大家的光临,一起交流学习
2006-12-21 16:54
syuanq
Rank: 2
等 级:新手上路
威 望:3
帖 子:297
专家分:0
注 册:2006-12-11
收藏
得分:0 
我是一个新手,二楼的我看得不是很明白,能否解释一下呢?谢谢

[url]www.[/url]欢迎大家的光临,一起交流学习
2006-12-21 17:13
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
收藏
得分:0 
[QUOTE]一个直接用字符形式输入
例如:
......
NUM DB 10 DUP(?) ;这里是数据段中定义的一个存放空间
......
MOV CX,10 ;初始化输入的位数,用CX装载便于循环控制
MOV AH,1 ;初始化调用1号中断(字符输入)
LEA BX,NUM ;用基址寄存器来存放 存储数据的首地址
NEXT0: INT 21H ;DOS功能中断调用,开始输入
MOV [BX],AL ;输入的数即时传送至存放单元
LOOP NEXT0 ;未输入完10位数,继续循环输入
MOV CX,10 ;显示数据用的位数计数
NEXT1: LEA BX,NUM
MOV DL,[BX] ;1号中断输出的数存放在DL中,所以就有了这条指令
INT 21H ;DOS功能中断调用,开始输出
LOOP NEXT1 ;未输出完10位数,继续循环输出
......[/QUOTE]
[QUOTE]......
NUM DB 11,0,12 DUP('$') ;这里的11表示字符串输入时最多输入11个字符,因为包括回车符,所以
事实上只允许输入10个字符,0可以用任意数代替(当然得在0~255间),它
在10号中断时被即时刷新,它表示的是实际的输入个数(由系统自行计算);
而这里的12表示你开辟的空间,这里是用户自行指定,最好指定的数为不
小于第1个数;或者在这里可以直接写上12个 '$'
......
MOV AH,10 ;10号中断是用于输入字符串的,默认的段是DS:DX;也就是说在数据段中的,
以DX的值为偏移量的数据区存放输入的字符串
LEA DX,NUM ;LEA指令是取源操作数的有效地址(偏移量),即这里指定了存放地址
INT 21H
MOV AH,9 ;9号中断,用于输出字符串,同样指定段DS:DX
LEA DX,NUM+2
INT 21H
......[/QUOTE]

我是金子,我要闪光的
2006-12-21 18:04
syuanq
Rank: 2
等 级:新手上路
威 望:3
帖 子:297
专家分:0
注 册:2006-12-11
收藏
得分:0 
我把MOV [BX],AX 改为 MOV [DX],AX为什么不行呢?

[url]www.[/url]欢迎大家的光临,一起交流学习
2006-12-21 19:00
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
收藏
得分:0 
因为[]中存放东东的有两种(当然变量除外):一个是立即数,一个是间接寄存器
而作为间接寄存器用的只有四个
BX(基址寄存器)、BP(基址指针寄存器)、SI(源变址寄存器)、DI(目的变址寄存器)
所以你用DX是不行的

我是金子,我要闪光的
2006-12-21 19:09
syuanq
Rank: 2
等 级:新手上路
威 望:3
帖 子:297
专家分:0
注 册:2006-12-11
收藏
得分:0 

有时候要用到寄存器的时候,但是却不知用哪个,请问 AX,BX,CX,DX,与 SP,BP,SI,DI 以及 CS,DS,SS,ES这个几个应该怎样区别?


[url]www.[/url]欢迎大家的光临,一起交流学习
2006-12-21 19:21
曾小
Rank: 1
等 级:新手上路
威 望:1
帖 子:239
专家分:0
注 册:2006-9-27
收藏
得分:0 
我有一个问题:怎么从键盘上输入一个二进制数?
系统默认的是十进制数,如果我输入一串由0和1组成的数是不是还得用
.radix来说明输入的是表示二进制?
类似的我要输入八进制,十六进制是不是都得这样来说明?
不知道我说清楚了不?
我就是不明白怎么把我们输入的数直接看成是二,八,十六进制.

2006-12-21 19:22
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
收藏
得分:0 
我们输入的数都是以16进制,如果你想把输入的数直接看成是其它进制的话,我们可以通过建立对应的分支程序来调用输入,例如我可以建立一个宏或子程序(HEX_B、HEX_O、HEX_D,当然名字可以自己取)用于输入并即时转换成对应进制,这样就可以解决啦

我是金子,我要闪光的
2006-12-21 19:30
快速回复:有关循环输入的问题!
数据加载中...
 
   



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

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