CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX MOV DI,9 A: MOV CX,DI LEA SI,LIB B: MOV AL,[SI] CMP AL,[SI+5] PUSH SI JA H JE O JB R O: INC SI MOV AL,[SI] CMP AL,[SI+5] JA H JB R JE O H: POP SI PUSH SI MOV BX,3 M: MOV AL,BYTE PTR[SI] MOV AH,BYTE PTR[SI+5] MOV BYTE PTR[SI],AH MOV BYTE PTR[SI+5],AL INC SI DEC BX JNZ M R: POP SI ADD SI,5 LOOP B DEC DI JNZ A LEA DX,LIB MOV AH,09H INT 21H
MOV AH,4CH INT 21H CODE ENDS END START
10. 现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其删除, 并在显示器上显示。 DATA SEGMENT BUF DB 05H DB ? DB 05H DUP (?) LIB DB 0DH,0AH,'data','$' DB 0DH,0AH,'name','$' DB 0DH,0AH,'time','$' DB 0DH,0AH,'file','$' DB 0DH,0AH,'code','$' DB 0DH,0AH,'path','$' DB 0DH,0AH,'user','$' DB 0DH,0AH,'exit','$' DB 0DH,0AH,'quit','$' DB 0DH,0AH,'test','$' DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX LEA DX,BUF MOV AH,0AH INT 21H LEA SI,BUF[2] LEA DI,LIB[2] MOV DL,10 L: PUSH SI PUSH DI MOV CX,4 CLD REPZ CMPSB MOV AX,DI JE DEL POP DI POP SI ADD DI,7
DEC DL JNZ L JMP EXIT DEL: MOV BX,AX SUB BX,6 EXIT:
LEA DX,LIB MOV CX,10 M:
PUSH DX CMP DX,BX JE N MOV AH,09H INT 21H N: POP DX ADD DX,7 LOOP M MOV AH,4CH INT 21H CODE ENDS END START
11. 现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序将上述字符串排序(升序)并插入disk使其人仍然有序, 并在显示器上显示。 DATA SEGMENT BUF DB 0FFH DB ? DB 0DH,0AH,0FDH DUP('?') LIB DB 0DH,0AH,'data' DB 0DH,0AH,'name' DB 0DH,0AH,'time' DB 0DH,0AH,'file' DB 0DH,0AH,'code' DB 0DH,0AH,'path' DB 0DH,0AH,'user' DB 0DH,0AH,'exit' DB 0DH,0AH,'quit' DB 0DH,0AH,'text','$' DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START:
MOV AX,DATA MOV DS,AX MOV DI,9 A: MOV CX,DI LEA SI,LIB[2] B: MOV AL,[SI] CMP AL,[SI+6] PUSH SI JA H JE O JB R O: INC SI MOV AL,[SI] CMP AL,[SI+6] JA H JB R JE O H: POP SI PUSH SI MOV BX,4 M: MOV AL,BYTE PTR[SI] MOV AH,BYTE PTR[SI+6] MOV BYTE PTR[SI],AH MOV BYTE PTR[SI+6],AL INC SI DEC BX JNZ M R: POP SI ADD SI,6 LOOP B DEC DI JNZ A LEA DX,LIB MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS
END START
12. 键盘输入一个十进制数,以十六进制的形式输出。 CODES SEGMENT
ASSUME CS:CODES START: NEXT:
MOV BX,0 CALL INPUT CALL OUTPUT JMP NEXT INPUT PROC NEAR SHURU:
MOV AH,01H INT 21H CBW
CMP AX,0DH JE RETURN CMP AX,'0' JB EXIT CMP AX,'9' JA EXIT
CALL TRANSFORM JMP SHURU RETURN: RET INPUT ENDP
TRANSFORM PROC NEAR XCHG AX,BX SUB BX,30H MOV CX,10 MUL CX ADD AX,BX XCHG AX,BX RET
TRANSFORM ENDP OUTPUT PROC NEAR MOV DH,4 MOV CL,4 CONTINUE: ROL BX,CL MOV DL,BL AND DL,0FH CMP DL,9