编写程序,计算下面函数的值并输出。

muiti-case-simple.png

首先定义 vcIO.inc
.686         ;使用686指令集
.MODEL flat, stdcall       ;使用flat平坦内存模式
option casemap : none      ; 大小写不敏感

;函数声明
printf     PROTO C : dword,:vararg  ;vararg参数:变参,参数个数不确定
scanf     PROTO C : dword,:vararg  ;dword参数 :格式描述串的有效地址。
_getch    PROTO C : vararg         ;注意:所有的参数都是dword型!
主要程序
include vcIO.inc
.data
    prompt      byte  'Enter a integers  X  : ',0      ;//字符串
    frmStr        byte     '%s',0ah,0          ;//字符串的输出格式,0ah:“\n”
    frmStr1        byte     '%d',  0          ;//数据的输入格式
    frmStr2        byte     '%d',0ah,0          ;//数字的输出,0ah:“\n”
    x           dword     ?

.code
judge proto stdcall arg1:dword              ;子函数定义
    main proc
        pushad
            invoke printf,offset frmStr,offset prompt
            invoke scanf,offset frmStr1,offset x
            invoke judge,x
        popad
        invoke  _getch
        ret 0
    main endp

    judge proc stdcall arg1:dword      ;子函数实现
        mov eax,arg1
        cmp eax,0            ; eax 大于0 跳到 xxx
        jge xxx   
        imul eax,2
        jmp done
    xxx: 
        cmp eax,10      
        jg xxxx          
        imul eax,3        ;eax 小于等于10
        jmp done
    xxxx:
        imul eax,4
        jmp done
    done:
        invoke printf,offset frmStr2,eax
        ret 
    judge endp

end main
运行结果

批注 2019-04-24 225734.png

标签: assembly

已有 2 条评论

  1. 请大佬手下我的膝盖!五一假期愉快!

添加新评论