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

来源:互联网 发布:javascript登录页面 编辑:程序博客网 时间:2024/06/05 22:37

题目要求:

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

题目分析:

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

代码实现:

data segmentrusult dw ?data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov ax,64h mov cx,64h xor bx,bxnext:     add bx,ax dec ax loop next mov rusult,bx mov ax,4c00h int 21hcode endsend 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

代码结果:









































原创粉丝点击