注册 登录
编程论坛 汇编论坛

求助!用循环结构编程

zhangyi_1989 发布于 2007-12-09 19:59, 1146 次点击
要求:
     把C语言的语句改写成功能相同的汇编语言程序(其中的变量全部为整型),以十进制字符串的形式输出运算结果。
                         for(i=1,j=0;i<100;i++)
                          if(i%2==0)j+=i;
5 回复
#2
lihy1142007-12-09 20:08
可以通过判断最后一位是0还是1来判断是不是偶数吧
#3
lihy1142007-12-10 10:15
可以 这样 来求解吧
  mov jiashu,1
  mov ax,0
    mov cx,49                                                //设置循环的次数
AGAIN:mov bl,jiashu
    and bl,01h                                               //判断是奇数还是偶数
    inc jiashu
    jnz AGAIN                                                 //奇数加一
    dec jiashu                                               //偶数求和
    add al,jiashu
    adc ah,0                                                   //加进位
    inc jiashu   
    loop AGAIN

但是不知道为什么结果不对
#4
mouse_china2007-12-10 19:05
for(i=1,j=0;i<100;i++)
                          if(i%2==0)j+=i;
-----------

一个显示十进制的子函数
一个程序出题
 循环 loop jcxz等
 if  cmp jz等等都可以
#5
zhulei19782007-12-10 20:16
data segment
  result dw 0
data ends
code segment
main proc far
  assume cs:code,ds:data
start:
  push ds
  sub ax,ax
  push ax
  mov ax,data
  mov ds,ax
  mov al,1
again:
  cmp al,100
  je again3
  mov ah,al
  and ah,1
  jz again1
  inc al
  jmp again
again1:
  mov cx,result
  mov ah,0
  add cx,ax
  mov result,cx
  inc al
  jmp again
again3:
  mov ax,result
  mov bx,10
  push bx   
loop1:
  cmp ax,0
  jz loop2
  sub dx,dx
  div bx   
  add dl,30h
  push dx   
  jmp loop1
loop2:
  pop dx   
  cmp dl,10
  je loop3
  mov ah,2
  int 21h
  jmp loop2
loop3:
  ret
main endp
code ends
end start

[[italic] 本帖最后由 zhulei1978 于 2007-12-10 20:17 编辑 [/italic]]
#6
lihy1142007-12-11 08:32
DATAS SEGMENT
    sum db 5 dup(0)
    jiashu db 0
    chushu dw 10
DATAS ENDS
STACKS SEGMENT
   db 20 dup(0)
STACKS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov ax,0
    mov cx,49
AGAIN:inc jiashu
    mov bl,jiashu
    and bl,01h
    jnz AGAIN
    add al,jiashu
    adc ah,0
    loop AGAIN
    mov cx,4
    mov si,3
aga:cwd
    div chushu
    add dl,30h
    mov sum[si],dl
    dec si
    loop aga
    mov sum[4],'$'
    mov dx,offset sum
    mov ah,9
    int 21h
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
1