题目:
程序开始运行时在屏幕上随机跳动一组一组十位数字的号码。敲空格时停止,得到的号码
是幸运号
在网上找的代码:
code segment
assume cs:code
start:
mov ax,0b800h
mov ds,ax
mov bh,7h
xor si,si
p0:
mov ch,6h ;ch放个位
p1:
mov cl,6h ;cl放十位
p2:
mov bl,cl
add bl,30h ;转成ascii
mov word ptr ds:[si],bx ;写到屏幕上
inc bx
mov word ptr ds:[si+4],bx
add bx,2h
mov word ptr ds:[si+8],bx
sub bx,1h
mov word ptr ds:[si+12],bx
sub bx,2h
mov word ptr ds:[si+16],bx
mov ah,1h ;检查键盘缓冲区有没有空格
int 16h
cmp al,' '
jz quit
dec cl ;没有空格就十位减1
jns p2
add si,2h ;十位小于零就个位减1,十位恢复为9
mov bl,ch
add bl,30h
mov word ptr ds:[si],bx
inc bx
mov word ptr ds:[si+4],bx
add bx,2h
mov word ptr ds:[si+8],bx
sub bx,1h
mov word ptr ds:[si+12],bx
sub bx,2h
mov word ptr ds:[si+16],bx
sub si,2h
dec ch
jns p1
jmp p0
quit:
mov ah,7h
int 21h
int 21h
mov ah,4ch
int 21h
code ends
end start
渣渣表示看不懂
,求教哪里有问题
程序开始运行时在屏幕上随机跳动一组一组十位数字的号码。敲空格时停止,得到的号码
是幸运号
在网上找的代码:
code segment
assume cs:code
start:
mov ax,0b800h
mov ds,ax
mov bh,7h
xor si,si
p0:
mov ch,6h ;ch放个位
p1:
mov cl,6h ;cl放十位
p2:
mov bl,cl
add bl,30h ;转成ascii
mov word ptr ds:[si],bx ;写到屏幕上
inc bx
mov word ptr ds:[si+4],bx
add bx,2h
mov word ptr ds:[si+8],bx
sub bx,1h
mov word ptr ds:[si+12],bx
sub bx,2h
mov word ptr ds:[si+16],bx
mov ah,1h ;检查键盘缓冲区有没有空格
int 16h
cmp al,' '
jz quit
dec cl ;没有空格就十位减1
jns p2
add si,2h ;十位小于零就个位减1,十位恢复为9
mov bl,ch
add bl,30h
mov word ptr ds:[si],bx
inc bx
mov word ptr ds:[si+4],bx
add bx,2h
mov word ptr ds:[si+8],bx
sub bx,1h
mov word ptr ds:[si+12],bx
sub bx,2h
mov word ptr ds:[si+16],bx
sub si,2h
dec ch
jns p1
jmp p0
quit:
mov ah,7h
int 21h
int 21h
mov ah,4ch
int 21h
code ends
end start
渣渣表示看不懂
