汇编语言实验课:第十三次记录

文章目录


要求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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值