汇编学习---循环结构程序设计

题目要求:

编程实现计算1~100的和,并将结果保存在字类型的result 变量中。

题目分析:

此题为一典型的循环结构设计题目,只需设定一个100的循环变量,依次递减1,然后累加即可。

代码实现:

data segment
	rusult dw ?
data ends

code segment
	 assume cs:code,ds:data
start:
	 mov ax,data
	 mov ds,ax
	 mov ax,64h
	 mov cx,64h
	 xor bx,bx
next:
     add bx,ax
	 dec ax
	 loop next
	 mov rusult,bx
	 mov ax,4c00h
	 int 21h
code ends
end start

----------------------------------------------------------------------------------
题目要求:
计算S=1+2*3+3*4+4*5+....+N*(N+1),直到N>200为止;并将结果输出到屏幕显示。
题目分析:
  • 通过设定200的循环变量,先求出其结果。
  • 然后通过设定将结果按16进制输出(主要根据ASCII码的差值)
代码实现:
data segment
    BUF db '1+2*3+3*4+4*5+....+200*201=',0dh,0ah,'$'
    RES db  4 dup(0),0dh,0ah,'$'
data ends


code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ah,09h
mov dx,offset BUF
int 21h
xor dx,dx
xor ax,ax 
mov bl,1
mov cx,200
  NEXT:                               ;NEXT实现1+2*3+3*4+4*5+....+200*201,并将计算结果存在dx寄存器中
          mov al,bl
inc bl
mul bl
add dx,ax  
loop NEXT
sub dx,1                       ;每次对dx中的数据取最后四位,将其转化为ASCII码,并保存在指定的RES单元
mov cx,04
mov di,offset RES 
add di,03
NEXT1:
          mov ax,dx
          and ax,000fh
          cmp al,0ah
          jb NEXT2
          add al,07
NEXT2:
        add al,30h
        mov [di],al
        dec di
        push cx
        mov cl,04h
        shr dx,cl
        pop cx
        loop NEXT1

       mov ah,09h                            ;输出结果
       mov dx,offset RES
       int 21h 
       mov ax,4c00h
       int 21h
code ends
end start

代码结果:









































你可能感兴趣的:(编程,c,汇编,n2)