文章目录
要求S=1+23+34+45+…N(N+1),求出当N(N+1)>200时N的值,以及此时的S的值
程序
DATAS SEGMENT
;此处输入数据段代码
a1 db "N=!"
a2 db "S=!"
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
;N
mov cx,1
mov bx,2
L0:
mov ax,cx
mul bx
cmp ax,200
ja L1
add cx,1
add bx,1
jmp L0
L1:
;output N=
mov si,offset a1
call output1
;output N'number
mov ax,cx
call output
;ctrl
call control
;output S=
mov si,offset a2
call output1
;output S'number
;N in cx
mov bx,1
mov ax,2
mov dl,3
L2:
mul dl
add bx,ax
mov ax,dx
add dx,1
cmp ax,cx
ja L3
jmp L2
L3:
mov ax,bx
call output
MOV AH,4CH
INT 21H
;output number
output proc
push bx
push cx
push dx
mov cl,10
mov bl,0
D1:
div cl
add bl,1
push ax
cmp al,0
mov ah,0
je D2
jmp D1
D2:
cmp bl,0
je D3
sub bl,1
pop cx
mov dl,ch
add dl,48
mov ah,02h
int 21h
jmp D2
D3:
pop dx
pop cx
pop bx
ret
output endp
;ctrl
control proc
push dx
push ax
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
pop ax
pop dx
control endp
;output string
output1 proc
push ax
push dx
out1:
mov dl,[si]
cmp dl,'!'
je over
mov ah,02h
int 21h
add si,1
jmp out1
over:
pop dx
pop ax
ret
output1 endp
CODES ENDS
END START