重庆it培训机构 > 汇编语言程序设计:[15]显示日期时间

汇编语言程序设计:[15]显示日期时间

简介


汇编语言(Assembly Language)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。

工具/原料


Assembly Language Masm汇编编译器

方法/步骤


1打开masm汇编编译程序,新建一个masm源文件脚本。 SEGMENT ;此处输入数据段代码 ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:,SS:STACKSSTART: MOV AX, MOV DS,AX ;此处输入代码段代码 MOV AH,4CH INT 21HCODES ENDS END START

2在正文中输入我们的程序代码,并将文件命名为riqi.asmSTACK SEGMENT STACK DW 200 DUP (?)STACK ENDSDATA SEGMENT SPACE DB 1000 DUP (' ') PATTERN DB 6 DUP (' '),0C9H,26 DUP (0CDH),0BBH,6 DUP (' ') DB 6 DUP (' '),0BAH,26 DUP (20H),0BAH,6 DUP (' ') DB 6 DUP (' '),0C8H,26 DUP (0CDH),0BCH,6 DUP (' ') DBUFFER DB 8 DUP (':'),12 DUP (' ') DBUFFER1 DB 20 DUP (' ') STR DB 0DH,0AH, 'xiaobo welcome you to play',0dh,0ah,'****Designed by 1wangxiaobo@163.com!****',0dh,0ah,'^Henan University of Economics and Law^',0dh,0ah,'PLEASE INPUT DATE(D) OR TIME(T) OR QUIT(Q): $'DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,0001H ;设置显示方式为40*25彩色文本方式 INT 10H MOV AX,DATA MOV DS,AX MOV ES,AX MOV BP,OFFSET SPACE MOV DX,0B00H MOV CX,1000 MOV BX,0040H MOV AX,1300H INT 10H MOV BP,OFFSET PATTERN ;显示矩形条 MOV DX,0B00H MOV CX,120 MOV BX,004EH MOV AX,1301H INT 10H LEA DX,STR ;显示提示信息 MOV AH,9 INT 21H MOV AH,1 ;从键盘输入单个字符 INT 21H CMP AL,44H ;AL='D'? JNE A CALL DATE ;显示系统日期A: CMP AL,54H ;AL='T'? JNE B CALL TIME ;显示系统时间 B: CMP AL,51H ;AL='Q'? JNE START MOV AH,4CH ;返回dos状态 INT 21HDATE PROC NEAR ;显示日期子程序DISPLAY:MOV AH,2AH ;取日期 INT 21H MOV SI,0 MOV AX,CX MOV BX,100 DIV BL MOV BL,AH CALL BCDASC1 ;日期数值转换成相应的ASCII码字符 MOV AL,BL CALL BCDASC1 INC SI MOV AL,DH CALL BCDASC1 INC SI MOV AL,DL CALL BCDASC1 MOV BP,OFFSET DBUFFER1 MOV DX,0C0DH MOV CX,20 MOV BX,004EH MOV AX,1301H INT 10H MOV AH,02H ;设置光标位置 MOV DX,0300H MOV BH,0 INT 10H MOV BX,0018HREPEA: MOV CX,0FFFFH ;延时REPEAT:LOOP REPEAT DEC BX JNZ REPEA MOV AH,01H ;读键盘缓冲区字符到AL寄存器 INT 16H JE DISPLAY JMP START MOV AX,4C00H INT 21H RETDATE ENDPTIME PROC NEAR ;显示时间子程序DISPLAY1:MOV SI,0 MOV BX,100 DIV BL MOV AH,2CH ;取时间 INT 21H MOV AL,CH CALL BCDASC ;将时间数值转换成ASCII码字符 INC SI MOV AL,CL CALL BCDASC INC SI MOV AL,DH CALL BCDASC MOV BP,OFFSET DBUFFER MOV DX,0C0DH MOV CX,20 MOV BX,004EH MOV AX,1301H INT 10H MOV AH,02H MOV DX,0300H MOV BH,0 INT 10H MOV BX,0018HRE: MOV CX,0FFFFHREA: LOOP REA DEC BX JNZ RE MOV AH,01H INT 16H JE DISPLAY1 JMP START MOV AX,4C00H INT 21H RETTIME ENDPBCDASC PROC NEAR ;时间数值转换成ASCII码字符子程序 PUSH BX CBW MOV BL,10 DIV BL ADD AL,'0' MOV DBUFFER[SI],AL INC SI ADD AH,'0' MOV DBUFFER[SI],AH INC SI POP BX RETBCDASC ENDPBCDASC1 PROC NEAR ;日期数值转换成ASCII码字符子程序 PUSH BX CBW MOV BL,10 DIV BL ADD AL,'0' MOV DBUFFER1[SI],AL INC SI ADD AH,'0' MOV DBUFFER1[SI],AH INC SI POP BX RETBCDASC1 ENDPCODE ENDS END START

3运行我们编辑的文件,在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间;输入大写字母“Q”,可结束程序。

点击显示全文

加载中...
加载中...
今日热点信息
精彩推荐
手机版 | 欢迎来到重庆it培训机构
RSS订阅