高分求关于新闻标题排序问题!!!
的有关信息介绍如下:不知道你的标题是从哪里得到的,是不是从数据库得到,可以给你两个思路: 1:这是一种特例,假设两行为 x y 1 7 2 8 . . x y=x+6(关系) 此关系可以让你通过id去索引,但是这个很有局限性,因为不肯能id之间存在这么巧的关系 2:从数据库读出,前提数据库返回结果集已经排序为 1,2,3,。。。 那么可以这样做 1 movenext 6 次 到 7 moveprevious 6 次再 movenext 一次得到 2 再movenext 6 次到8 依次类推,因为如果你是用 table 来处理,那么必须是横向生成的,不能像我们画图一样可以先把第一列画,然后在春知再后面加一列。 ; 本程序通过编译,运行正确 Code Segment Assume CS:Code,DS:Code ; ----------------------------------------- ; 功能:置光标位置 ; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标) SetCursor Proc Near PUSH CX PUSH BX PUSH AX XOR BX,BX MOV AH,2 INT 10H POP AX POP BX POP CX RET SetCursor EndP ; ----------------------------------------桥森局- List_Colums Proc Near ;显示一列新闻标题 mov dx,word ptr Cursor_DX call SetCursor ;设置光标位置 lodsw ;读标题地址 mov dx,ax mov ah,9 int 21h inc Cursor_DX[1] ;行号增1 loop List_Colums ret List_Colums EndP ; ----------------------------------------- Title_01 db ' 1. AAAAAAAAAAA$' ;新闻标题 Title_02 db ' 2. BBBBBBBBBBB$' Title_03 db ' 3. CCCCCCCCCCC$' Title_04 db ' 4. DDDDDDDDDDD$'敏让 Title_05 db ' 5. EEEEEEEEEEE$' Title_06 db ' 6. FFFFFFFFFFF$' Title_07 db ' 7. GGGGGGGGGGG$' Title_08 db ' 8. HHHHHHHHHHH$' Title_09 db ' 9. IIIIIIIIIII$' Title_10 db '10. JJJJJJJJJJJ$' Title_11 db '11. KKKKKKKKKKK$' Title_12 db '12. LLLLLLLLLLL$' Title_13 db '13. MMMMMMMMMMM$' Title_14 db '14. NNNNNNNNNNN$' Title_15 db '15. OOOOOOOOOOO$' Title_16 db '16. PPPPPPPPPPP$' Title_17 db '17. QQQQQQQQQQQ$' Title_18 db '18. RRRRRRRRRRR$' Title_19 db '19. SSSSSSSSSSS$' Title_20 db '20. TTTTTTTTTTT$' Title_21 db '21. UUUUUUUUUUU$' Title_22 db '22. VVVVVVVVVVV$' Title_23 db '23. WWWWWWWWWWW$' Title_24 db '24. XXXXXXXXXXX$' Title_25 db '25. YYYYYYYYYYY$' Title_26 db '26. ZZZZZZZZZZZ$' Index dw Title_01,Title_02,Title_03,Title_04,Title_05,Title_06,Title_07,Title_08,Title_09,Title_10 dw Title_11,Title_12,Title_13,Title_14,Title_15,Title_16,Title_17,Title_18,Title_19,Title_20 dw Title_21,Title_22,Title_23,Title_24,Title_25,Title_26 ;新闻标题原排序表 Elements equ ($-Index)/Type Index ;新闻题目数 Lines equ 10 ;每列行数 Colums equ 3 ;每行列数 Cursor_DX db 0,0 ;初始化光标位置 Start: push cs pop ds ;使数据段与代码段同段 ; 显示新闻标题,每列最多10个标题,最多3列。假设每个标题最多24个字符,列距2个字符。 cld lea si,Index ;新闻标题现在排序表地址 mov ax,Elements ;新闻题目数 mov cx,Lines ;每列行数 div cl mov bx,ax ;保存行数和列数 mov cl,bl xor ch,ch jcxz Last_Colum ;若行数=0,只显示一列的零头(少于10个标题) cmp cx,Colums ;列数>3? jbe List_Lines ;不大于,显示指定列数 mov cx,Colums ;若列数超过3列,最多显示3列 List_Lines: push cx mov cx,Lines ;每列行数 call List_Colums ;显示一列 add Cursor_DX,26 ;列号加26 mov Cursor_DX[1],0 ;行号置0 pop cx loop List_Lines Last_Colum: mov cl,bh ;取最后一列行数 xor ch,ch jcxz Exit_Proc cmp bl,Colums ;列数>3? ja Exit_Proc ;大于,已经显示,结束程序 call List_Colums ;显示一列 mov dx,0a00h ;设置光标位置 call SetCursor Exit_Proc: mov ah,4ch ;结束程序 int 21h Code ENDS END Start ;编译到此结束