作者在 2008-07-24 22:54:10 发布以下内容
;用WIN32汇编演示双重循环的用法(也可把内循环做成子程序,用外循环去CALL)
;从2个红球,3个白球,4个黑球中任意取出5个球,且其中必须有白球,有几种可能的组合情况?
;============================================================================
.386
.model flat,stdcall
option casemap:none
;从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
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 (?)
dwRed dd ?
dwWhite dd ?
dwBlack dd ?
dwCount dd ? ;计数器
szBuffer dd 256 dup (?)
.const
szCaption db '提示',0
szText db '三种色球的组合情况是:%d种 !',0
szCaption db '提示',0
szText db '三种色球的组合情况是:%d种 !',0
.code
start:
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
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++
;=======================================================
;与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++
;=======================================================