wx0305 发表于 2008-5-31 13:26

初学汇编 遇到的问题

C++ 代码:
int main()
{
    int i,j,k,a;
    cin>>a;
    if(a%2==0)
               a+=1;
    for(i=a;i>0;i-=2)
     {
            for(j=0;j<a-i;j++)
                cout<<' ';
            for(k=i;k>0;k--)
                cout<<'*';
     }
     return 0;
}
此代码 所对应的 汇编怎么写啊
弄不懂  数据的存取

zhulei1978 发表于 2008-5-31 20:01

[code]data segment
num db 3,?,?,?
cnt db ?
data ends

code segment
main proc far
assume cs:code,ds:data

start:
mov ax,data
mov ds,ax
mov dx,offset num
mov ah,0ah
int 21h
mov al,num+1
cmp al,1
jz flag1
mov al,num+2
sub al,30h
mov bl,10
mul bl
mov bl,num+3
sub bl,30h
add al,bl
jmp flag2
flag1:
mov al,num+2
sub al,30h
flag2:
mov bl,al
shr bl,1
jb flag3
inc al
flag3:
mov cnt,al
mov cl,al
mov ch,0
inc cl
loop1:
dec cx
push cx
sub al,cl
jz  flag4
mov cl,al
loop2:
mov dl,' '
mov ah,2
int 21h
loop loop2
flag4:
pop cx
push cx
loop3:
mov dl,'*'
mov ah,2
int 21h
loop loop3
mov al,cnt
pop cx
loop loop1
mov ax,4c00h
int 21h
main endp
code ends
end start[/code]

wx0305 发表于 2008-6-1 19:52

谢谢了啊
   在  loop loop3 和 mov al,cnt  中间添加以下代码:
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
是不是每打完一排执行完两个内循环后 换行呀

zhulei1978 发表于 2008-6-2 19:17

加在loop2和flag4之间

[[it] 本帖最后由 zhulei1978 于 2008-6-3 16:42 编辑 [/it]]

页: [1]

编程论坛