注册 登录
编程论坛 汇编论坛

曾小老师,可以详细解释一下吗?

格格 发布于 2006-12-27 15:12, 1226 次点击
已知从符号地址M开始的内存单元存放着15个带符号数,试编写一个汇编程序:将正数依次存放到以符号地址P开始的存储单元中,再将负数依次存放到以符号地址N开始的存储单元中,并将正数和负数的个数显示出来。
14 回复
#2
曾小2006-12-28 20:21
首先声明我还不配做老师!
下面的程序你看看啊:
DSEG SEGMEMT
M DW ........(自己写15个数)
S1 DB ?
S2 DB ?
P DW 15 DUP (?)
N DW 15 DUP(?)
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG ,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV CX,15
MOV S1,0
MOV S2,0
MOV SI,-1
SIGN: INC SI
MOV BX,M[SI]
CMP BX,0
JL STEP1
INC S1
MOV P[SI],BX
LOOP SIGN
STEP1:INC S2
MOV N[SI],BX
LOOP SIGN
MOV AL,S1
ADD AL,30H
MOV S1,AL
MOV DL,S1
MOV AH,02H
INT 21H
MOV AL,S2
ADD AL,30H
MOV S1,AL
MOV DL,S2
MOV AH,02H
INT 21H
MOV AX,4C00H
INT 21H
CSEG ENDS
END START
你先看看,看不明白再说!!!
呵呵........
#3
乖乖宝贝儿2006-12-28 20:41

学习

[此贴子已经被作者于2006-12-28 20:42:11编辑过]

#4
枫无痕2006-12-28 23:37
厉害啊!佩服的没话说了啊!
#5
senyee2006-12-29 17:46
以下是引用枫无痕在2006-12-28 23:37:42的发言:
厉害啊!佩服的没话说了啊!

#6
senyee2006-12-29 17:57
SIGN: INC SI
MOV BX,M[SI]
CMP BX,0
JL STEP1
INC S1
MOV P[SI],BX
LOOP SIGN
STEP1:INC S2
MOV N[SI],BX

si.....

#7
曾小2006-12-29 18:47
大家是在说反话吗?
#8
乖乖宝贝儿2006-12-29 20:52
我刚刚学习汇编

要多向大家请教

感觉汇编好难呀
#9
senyee2006-12-29 21:55
你那个si 是不是该改进哈~~
#10
曾小2006-12-30 16:14
不要吧!我运行过的.
你的意见是什么啊?
说说看看 ,我们一起学习.
#11
lefttime2006-12-30 18:08
[QUOTE]
......
MOV AL,S1
ADD AL,30H
MOV S1,AL
MOV DL,S1
MOV AH,02H
INT 21H
MOV AL,S2
ADD AL,30H
MOV S1,AL
MOV DL,S2
MOV AH,02H
INT 21H
......
[/QUOTE]
2楼的回答有个小毛病呀,因为楼主的提示可是15个数,如果程序中只是让AL加上30H,只局限于正负个数刚好不超过10的情况下有效,当出现其中正(负)数超过10,直接给加上30H后,显示的可是会出错的哦
#12
曾小2006-12-31 10:31
那还的加判断语句判断该数是在哪个范围的数(0到9还是A到F)是吧?
#13
地瓜1987112007-06-09 16:08
DSEG   SEGMEMT写错了DSEG   SEGMENT
#14
爱以走远2007-06-09 23:12
以下是引用曾小在2006-12-30 16:14:14的发言:
不要吧!我运行过的.
你的意见是什么啊?
说说看看 ,我们一起学习.
说实话 我不知道你是怎么运行通过的
#15
爱以走远2007-06-09 23:17
还有一点注意
万一一种数大于十个 你的输出就不行拉
1