MOV AH,43H ;43H号功能调用 MOV AL,01H ;1置(0取)文件属性 MOVCX,02H ;02H为隐含属性(注) LEA DX,F_NAME;文件名首址送DX INT 21H ;修改文件属性 MOV AH,4CH INT 21HCODEENDS END BEGIN注:CX中第0位为1表示文件是只读属性,第1位为1表示隐含属性,第2位为1表示系统文件,第3位为1表示卷标,第4位为1表示子目录,第5位为1表示归档文件,第6至7位未用。(参见P320)END*【实验,自学】编制一个程序,将十进制数转换为十六进制数,要求从键盘取得一个十进制数,然后把该数以十六进制形式在屏幕上显示出来,再读数,再显示,如此循环,直到键入Ctrl+C为止。根据题意,用一个KEY_ASTOB子程序完成键盘输入和十进制数到二进制数的转换;用SPACE_2子程序完成空格;用BTOH_DISP子程序完成二进制到十六进制显示;再用一个CR_LF子程序完成回车和换行。主程序和子程序之间参数传递使用寄存器BX。*KEY_ASTOB子程序说明:十进制数有若干位,而每输入1位十进制数数,原来已输入的每一位数字都要向高位移一位,也就是扩大10倍,然后再把新输入的数字加到个位上。在KEY_ASTOB子程序中采用的方法与它类似,每输入一位数(ASCII码)都要先把它转换为二进制数,每得到这样一个新的二进制数,原来已得到的二进制数就要乘10,然后再加上这个新的二进制数,这样得到的二进制数才能与已输入的十进制数相当。通过分析本题程序编制如下: DATA SEGMENTMESS1 DB‘Pleaseinputanumber:$’MESS2 DB07H,07H,08H,’$’ ;响铃、退格DATA ENDS CODESEGMENT ASSUMECS:CODE,DS:DATA* ;----以下是主程序部分---- MAIN PROCFAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AXRP: CALL KEY_ASTOB CALL CR_LF CALL BTOH_DISP CALL CR_LF JMP RP MAIN ENDP*;----以下是KEY_ASTOB子程序----KEY_ASTOBPROCNEAR LEA DX,MESS1 ;显示提示信息 MOV AH,09H INT 21H MOV BX,0 ;BX存放输入的数据NEWCH: MOV AH,1 ;从键盘取一位数 INT 21H CMP AL,0DH JZ EXIT AND AL,0FH ;把ASCII码变为二进制数 JL ER ;若小于0(非数字)跳转 CMP AL,9D ;同9比较 JG ER ;大于9(非数字)跳转* MOV AH,0 ;为了把AL中的字节内容扩展为字 XCHG AX,BX;交换数据后,新数在BX,原数在AX MOV CX,10D;十进制数10送CX MUL CX ;AX中的原数乘10,结果送AX XCHGAX,BX;乘10后的结果在BX,新数在AX ADD BX,AX;乘10后的原数和新数相加,结果送BX JMP NEWCH;跳转后等待再次输入数据ER: MOV AH,09H;退格、响铃后,重新输入 LEA DX,MESS2 INT 21H JMP NEWCHEXIT: RET ;结束输入和转换,