怎么没人做第二题呢?大概还是冷清的原因。
根据题意,这题首先要解决十六进制转十进制显示的问题。其次再是显示过滤后的数据。显示需要的数据真不需要排序,有两个方法解决:
1,查表法,由于是一个字节的数据,因此可以使用一个256字节的表格,通过一次性扫描,在表格里建立数据存在标志,显示是按顺序扫描表格只显示有标志的字节编号。优点是只需扫描一次,速度快,缺点是需要内存空间建立表格。
2,试探法,用一个计数器从0-255计数,逐个判断是否和数据缓冲里的数据相等,相等则显示,不等继续计数。优点是不需要多余内存空间,缺点是要扫描256次数据区。
下述用47行代码能满足楼主要求:
 程序代码:
程序代码:
	
	
			根据题意,这题首先要解决十六进制转十进制显示的问题。其次再是显示过滤后的数据。显示需要的数据真不需要排序,有两个方法解决:
1,查表法,由于是一个字节的数据,因此可以使用一个256字节的表格,通过一次性扫描,在表格里建立数据存在标志,显示是按顺序扫描表格只显示有标志的字节编号。优点是只需扫描一次,速度快,缺点是需要内存空间建立表格。
2,试探法,用一个计数器从0-255计数,逐个判断是否和数据缓冲里的数据相等,相等则显示,不等继续计数。优点是不需要多余内存空间,缺点是要扫描256次数据区。
下述用47行代码能满足楼主要求:
 程序代码:
程序代码:    code segment
    assume cs:code,ds:code,es:code,ss:code
    org 100h
start:    xor bl,bl
    cld
slp1:    mov al,bl
    mov di,offset buf1
    mov cx,offset buf3+1
    sub cx,di
    repnz scasb
    cmp cx,0
    jz slp2
    call hexdec
slp2:    cmp bl,255
    jz slp3
    inc bl
    jmp slp1 
slp3:    mov ax,4c00h
    int 21h
hexdec:    pushf      ;一个字节的十六进制转换为十进制并显示出来,待转换数据在ax中
    push dx    ;根据本程序完全不需要push dx,但写函数起码的习惯是保存要用的寄存器
    push di
    mov di,offset buf3+3
    std
hdlp2:    mov byte ptr[di],20h
    xor ah,ah
    cmp ax,0
    jz  hdlp1  ;ax=0转换结束
    div buf4
    xchg al,ah
    add al,'0'
    stosb
    xchg al,ah
    jmp hdlp2
hdlp1:    mov ah,9
    mov dx,di
    int 21h
    pop di
    pop dx
    popf
    ret
    buf1 db 3,12,14,15,17,19,22,23,88,99,101,105,106,109,202
    buf2 db 1,3,5,6,10,12,14,18,19,21,22,45,101,103,105,106,109
    buf3 db 4 dup(20h),'$'
    buf4 db 10  ;除数
    code ends
    end start										
					
	
能编个毛线衣吗?
 
	  
 
											







 
	     
											
 厉害!
厉害! 
					
				
			