演示双重循环(牛哥牛弟不要笑我菜啊)

作者在 2008-07-24 22:54:10 发布以下内容
;用WIN32汇编演示双重循环的用法(也可把内循环做成子程序,用外循环去CALL)
;从2个红球,3个白球,4个黑球中任意取出5个球,且其中必须有白球,有几种可能的组合情况?
;============================================================================
       .386
       .model flat,stdcall
       option casemap:none
include    windows.inc
include    user32.inc
include    kernel32.inc
includelib user32.lib
includelib kernel32.lib
     .data?
dwRed  dd ?
dwWhite  dd ?
dwBlack  dd ?
dwCount  dd ? ;计数器
szBuffer dd 256 dup (?)
 
      .const
szCaption db '提示',0
szText  db '三种色球的组合情况是:%d种 !',0
 
       .code
start:
 .while dwRed <= 2      ;红球的循环是0~2
  mov dwWhite,1 ;白球循环是1~3
  .while dwWhite <= 3
   mov eax,5 ;以下是减去红球白球,得黑球的个数
   sub eax,dwRed
   sub eax,dwWhite
   mov dwBlack,eax
   .if dwBlack >= 0 && dwBlack <=4   ;判断黑球取值范围
    add dwCount,1             ;累加组合情况
    
   .endif
   inc dwWhite
  .endw
  inc dwRed
 .endw
 invoke wsprintf,addr szBuffer,addr szText,dwCount
 invoke MessageBox,NULL,addr szBuffer,addr szCaption,MB_OK
 invoke ExitProcess,NULL
 
  end start
;=======================================================
;与C语言比较则是:
;int i,j,k,count;
;都初始化为0
;for(i=0;i<=2;i++)
;  for(j=1;j<=3;j++)
;    k=5-i-j;
;    if(k>=0 && k<=4)
;       count++
;=======================================================
文章评论,共0条
游客请输入验证码