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

初学汇编 遇到的问题

发布于 2008-05-31 13:26, 848 次点击
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;
}
此代码 所对应的 汇编怎么写啊
弄不懂  数据的存取
3 回复
#2
zhulei19782008-05-31 20:01
程序代码:
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
#3
2008-06-01 19:52
谢谢了啊
   在  loop loop3 和 mov al,cnt  中间添加以下代码:
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
是不是每打完一排执行完两个内循环后 换行呀
#4
zhulei19782008-06-02 19:17
加在loop2和flag4之间

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