主题:求救,一题关于8086计算机程序设计的问题,先谢~~~
缥渺星
[专家分:0] 发布于 2005-05-30 21:21:00
编写一个汇编程序,求前100个自然数的和。[em18]
回复列表 (共10个回复)
沙发
lsylsy [专家分:400] 发布于 2005-05-31 09:44:00
这个简单,多想下,看下书,应该会的。
板凳
dengfanrui [专家分:100] 发布于 2005-05-31 20:46:00
是求1+2+3+4+……+100
还是求自己定义的100个数的和呀。
3 楼
dengfanrui [专家分:100] 发布于 2005-05-31 20:56:00
如果是1+2+3+4+……+100
可以这么做:
code segment
start: mov ax,1
sub dx,dx
mov cx,100
count: add dx,ax
inc ax
loopnz count
code ends
end start
缺少的自己补上,
最后的数据在dx中……
哈哈,我也是一只菜鸟……
大家共同学习吗……
[em1][em1][em1][em1]
4 楼
缥渺星 [专家分:0] 发布于 2005-05-31 22:18:00
555~~~我还是初学者的说,我真的不明白啊,请大家帮帮我吧~~
5 楼
xiaocaocao [专家分:90] 发布于 2005-06-01 11:03:00
先把那100个数放在数组中,然后用带进位的加法指令实现,将循环次数放在CX中,用LOOP指令实现循环
6 楼
LYLyanli [专家分:60] 发布于 2005-06-01 12:07:00
想想```
7 楼
自杀 [专家分:0] 发布于 2006-04-03 20:26:00
5楼xiaocaocao,不会要把1到100自己输入数组吧?
我也是菜鸟,请教一下
8 楼
自杀 [专家分:0] 发布于 2006-04-03 20:31:00
date segment
code segment
assume cs:code,ds:date
state:mov cx,100
mov ax,o
mov bx,1
l1:add ax,bx
inc bx
loop l1
add ax,30h
mov ah,02h
int 21h
date ends
end state
我不知道我这哪错了
老师就讲主程序
前面代码段怎么设定?
请教
9 楼
随便我 [专家分:0] 发布于 2006-04-04 16:02:00
8楼的,好象你那个错的有点多
不是date,是data
data segment要有data ends
倒数第二行应该是code ends吧
mov ah,02h
int 21h
这个中断要有dl,你这样写实现不了这个中断
10 楼
newzp [专家分:200] 发布于 2006-04-04 16:47:00
试着写了一个,可以运行
结果5050D=13BAH
;求1+2+3...+100=
STACK SEGMENT STACK
DW 256 DUP(0)
STACK ENDS
DATA SEGMENT
N DB 64H
B DB 2 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV CL,N
L: MOV AL,CL
ADD AL,B+1
MOV B+1,AL
MOV AL,0
ADC AL,B
MOV B,AL
DEC CL
JNZ L
MOV CX,2
LEA DI,B
R: MOV AL,[DI]
CALL ABC
INC DI
LOOP R
MOV AH,4CH
INT 21H
ABC PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV CH,2
MOV BL,AL
T: MOV CL,4
ROL BL,CL
MOV DL,BL
AND DL,0FH
CMP DL,10
JB NEXT
ADD DL,7
NEXT: ADD DL,30H
MOV AH,2
INT 21H
DEC CH
JNZ T
POP DX
POP CX
POP BX
POP AX
RET
ABC ENDP
CODE ENDS
END START
我来回复