求助!用循环结构编程
要求:把C语言的语句改写成功能相同的汇编语言程序(其中的变量全部为整型),以十进制字符串的形式输出运算结果。
for(i=1,j=0;i<100;i++)
if(i%2==0)j+=i;
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
但是不知道为什么结果不对 for(i=1,j=0;i<100;i++)
if(i%2==0)j+=i;
-----------
一个显示十进制的子函数
一个程序出题
循环 loop jcxz等
if cmp jz等等都可以 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]] 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]
