用汇编语言显示这样的数字组合:第一排是123456789第一列123456789然后从左上角开始123456789到右下角,其
总的来说就是有三排数字123456789,横着一排,竖着一列,斜着一列 展开
如下图可否?
斜度不够,不太好看。
如果仅仅要求显示 1 ~ 9,共 9 个数字,那么,
程序就很简单了,显示一个字符串,就完成了要求。
程序如下:
DATA SEGMENT
MSG1 DB 10, 13
DB ' 0123456789', 10, 13
DB ' 11', 10, 13
DB ' 2 2', 10, 13
DB ' 3 3', 10, 13
DB ' 4 4', 10, 13
DB ' 5 5', 10, 13
DB ' 6 6', 10, 13
DB ' 7 7', 10, 13
DB ' 8 8', 10, 13
DB ' 9 9', 10, 13, 24H
DATA ENDS
CODE SEGMENT
BEGIN:
MOV AX, DATA
MOV DS, AX
LEA DX, MSG1
MOV AH, 9
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
END BEGIN
本程序执行后,显示如下:
C:\MASM>ww
0123456789
11
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
C:\MASM>
本答案,回答的是最早的。
但是,百度一直不舍得显示,今天才放开。
d1 db '123456789',0DH,0AH,'$'
d2 db '11',0DH,0AH,'$'
d3 db '2 2',0DH,0AH,'$'
d4 db '3 3',0DH,0AH,'$'
d5 db '4 4',0DH,0AH,'$'
d6 db '5 5',0DH,0AH,'$'
d7 db '6 6',0DH,0AH,'$'
d8 db '7 7',0DH,0AH,'$'
d9 db '8 8',0DH,0AH,'$'
d10 db '9 9',0DH,0AH,'$'
addr dw d1,d2,d3,d4,d5,d6,d7,d8,d9,d10
dat ends
cod segment
assume cs:cod,ds:dat
start:
mov ax,dat
mov ds,ax
lea bx,addr
mov cx,10
mov ah,9
next:
mov dx,[bx]
int 21h
add bx,2
loop next
mov ah,4ch
int 21h
cod ends
end start
;在草稿纸上画出要输出的形状,各行定义成字符串,输出各行就OK
data segment
M1 DB 0dh,0ah,'0123456789',0dh,0ah
DB '11',0dh,0ah,'$'
M2 DB 32H,0DH,0AH,'$'
data ends
code segmentassume cs:code, ds:data
main proc far
begin:
push ds
mov ax,0
push ax
MOV AX,DATA
MOV DS,AX
mov ah,9
mov dx,offset m1
int 21h
MOV CX,8
NEXT:
MOV DL,M2
MOV AH,2
INT 21H
PUSH CX
XOR CX,CX
MOV CL,M2
SUB CL,31H
L2:
MOV AH,2
MOV DL,' '
INT 21H
LOOP L2
MOV AH,09
MOV DX,OFFSET M2
INT 21H
POP CX
INC M2
LOOP NEXT
ret
main endp
code ends
end begin
;MASM 5.0编译通过,运行无误。
data segment
M1 DB 0dh,0ah,'0123456789',0dh,0ah
DB '11',0dh,0ah,'$'
M2 DB 32H,0DH,0AH,'$'
data ends
code segmentassume cs:code, ds:data
main proc far
begin:
push ds
mov ax,0
push ax
MOV AX,DATA
MOV DS,AX
mov ah,9
mov dx,offset m1
int 21h
MOV CX,8
NEXT:
MOV DL,M2
MOV AH,2
INT 21H
PUSH CX
XOR CX,CX
MOV CL,M2
SUB CL,31H
L2:
MOV AH,2
MOV DL,' '
INT 21H
LOOP L2
MOV AH,09
MOV DX,OFFSET M2
INT 21H
POP CX
INC M2
LOOP NEXT
ret
main endp
code ends
end begin