|

楼主 |
发表于 2011-6-17 09:25:52
|
显示全部楼层
本帖最后由 Cherish♀ang 于 2011-6-18 18:44 编辑
下面是我自己编的第二题的代码:
datas segment
chick db 0 ;暂存小鸡
hen db 0 ;暂存母鸡
cock db 0 ;暂存公鸡
obuff db "chick 00 hen 00 cock 00",0ah,0dh,'$' ;用于输出各种鸡的个数
datas ends
stacks segment
db 32 dup(0)
stacks ends
code segment
start:
assume cs:codes,ds:datas,ss:stacks
mov ax,datas
mov ds,ax
mov ax,stacks
mov ss,ax
mov di,offset obuff ;si,di初始化
xor si,si
mov cx,99 ;设置循环次数
outside:
inc byte ptr 1[si]
mov byte ptr 2[si],-1
mov ax,100 ;设置内循环的循环次数
sub ax,cx
push cx
mov cx,ax
inside:
inc byte ptr 2[si]
mov bx,0e08h ;计算公鸡*14+母鸡*8,存放在al中
mov al,byte ptr 1[si]
mul bl
mov dl,al
mov al,byte ptr 2[si]
mul bh
add al,dl
cmp al,100
jz ok
loop inside
jmp outside2
ok:
;输出这种组合方式
mov al,100 ;求小鸡数
sub al,byte ptr 1[si]
sub al,byte ptr 2[si]
mov byte ptr [si],al
mov bl,10
xor ah,ah ;将小鸡数目转化成ascii码储存在obuff中的相应位置
div bl
add ax,3030h
mov word ptr 6[di],ax
xor ah,ah ;将母鸡数目转化成ascii码储存在obuff中的相应位置
mov al,byte ptr 1[si]
div bl
add ax,3030h
mov word ptr 14[di],ax
xor ah,ah ;将公鸡数目转化成ascii码储存在obuff中的相应位置
mov al,byte ptr 2[di]
div bl
add ax,3030h
mov word ptr 23[di],ax
mov dx,di
mov ah,9
int 21h
outside2:
pop cx
loop outside
mov ax,4c00h
int 21h
code ends
end start
可是它运行后的结果是错误的,请各位高手帮忙看下代码。
谢谢~
下面是运行结果截图:
|
|