用汇编实现乘法表

1.定义变量

format2 byte "%d*%d=%d",9,0 ;格式符

2.调用函数

       call mulTable

3.函数实现

mulTable:
        push ebp
        mov ebp,esp
        sub esp,12 ;3*int
        mov dword ptr[ebp-4],1
        jmp f1jm1
f1jm2:
        add dword ptr[ebp-4],1  ;外循环++
f1jm1:
        cmp dword ptr[ebp-4],10;外循比较
        jge f1jg1;>=跳出循环到f1jg1出 否则执行下面得代码

        mov dword ptr[ebp-8],1
        jmp f2jm1
f2jm2:
        add dword ptr[ebp-8],1;内循环++
f2jm1:
        cmp dword ptr[ebp-8],10;内循比较
        jge f2jg1;>=跳出循环到f2jg1出 否则执行下面得代码
        
        mov  eax,dword ptr[ebp-4]
        mov  ebx, dword ptr[ebp-8]
        imul eax,ebx
        mov  dword ptr[ebp - 12],eax
        invoke printf,ADDR format2,dword ptr[ebp-8],dword ptr[ebp-4],dword ptr[ebp - 12]

        cmp ebx,dword ptr[ebp-4];相同就跳出循环
        je f2jg1

        jmp f2jm2;内循环继续循环
f2jg1:
        invoke printf,ADDR format1
        jmp f1jm2
f1jg1:
        mov esp,ebp
        pop ebp
        ret

你可能感兴趣的:(汇编,汇编,算法,c语言,单片机,c++)