汇编学习---循环结构程序设计
题目要求:编程实现计算1~100的和,并将结果保存在字类型的result 变量中。
题目分析:
此题为一典型的循环结构设计题目,只需设定一个100的循环变量,依次递减1,然后累加即可。
代码实现:
view plain
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
代码结果:
作者 small_fish__
补充:软件开发 , 其他 ,