当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

用汇编语言编写程序动态显示时间

更新:01-02 整理:39baobao.com
字体:

[小学计算机教案编写格式]教案格式: 编写:共分十部分 一、 课时:90'每节课,中间休息十分钟 二、 教学对象:学生年级和程度 三、 教学内容: 1. 单词--------- 2. 句型--------- 3. 日常用语-------- 4. 自然...+阅读

cursor equ 45H attrib equ 2fh code segment assume cs:code,ds:code start: jmp go oldcur dw ? OLD1C DW 2 DUP(?) NEWINT1C: PUSHF CALL DWORD PTR CS:OLD1C push ax PUSH BX PUSH CX PUSH DX XOR BH,BH MOV AH,3 INT 10H MOV CS:OLDCUR,DX MOV AH,2 xor bh,bh MOV DX,CURSOR INT 10H MOV AH,2; ;读取系统时钟 INT 1AH PUSH DX PUSH CX POP BX PUSH BX CALL SHOWBYTE CALL SHOWCOLON POP BX XCHG BH,BL CALL SHOWBYTE CALL SHOWCOLON POP BX CALL SHOWBYTE MOV DX,CS:OLDCUR MOV AH,2 XOR BH,BH INT 10H POP DX POP CX POP BX POP AX IRET SHOWBYTE PROC NEAR PUSH BX MOV CL,4 MOV AL,BH SHR AL,CL ADD AL,30H CALL SHOW CALL CURMOVE POP BX MOV AL,BH AND AL,0FH ADD AL,30H CALL SHOW CALL CURMOVE RET SHOWBYTE ENDPSHOWCOLON PROC NEAR MOV AL,':' CALL SHOW CALL CURMOVE RET SHOWCOLON ENDPCURMOVE PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,3 MOV BH,0 INT 10H INC DL MOV AH,2 INT 10H POP DX POP CX POP BX POP AX RET CURMOVE ENDPSHOW PROC NEAR PUSH AX PUSH BX PUSH CX MOV AH,09H MOV BX,attrib MOV CX,1 INT 10H POP CX POP BX POP AX RET SHOW ENDPGO: PUSH CS POP DS MOV AX,351CH ;取中断向量 INT 21H MOV OLD1C,BX; ;保存原中断向量 MOV BX,ES MOV OLD1C+2,BX MOV DX,OFFSET NEWINT1C; ;置新的中断向量 MOV AX,251CH INT 21H MOV DX,OFFSET GO SUB DX,OFFSET START MOV CL,4 SHR DX,CL ADD DX,11H MOV AX,3100H; ;结束并驻留 INT 21H CODE ENDS END START-----------------------------------------------------------------------------------cursor equ 45H ;定义显示位置 attrib equ 2fh ;定义时钟显示颜色,绿底白字 code segment assume cs:code,ds:code start: jmp go ;转到程序预处理,设置中断并驻留 oldcur dw ? ;用于保存原来光标位置 OLD1C DW 2 DUP(?) ;用于保存原来的 int 1c 入口地址 NEWINT1C: ;新的 int 1c 入口 PUSHF ;标志压栈 CALL DWORD PTR CS:OLD1C ;调用原来的 int 1c 中断 push ax PUSH BX PUSH CX PUSH DX XOR BH,BH MOV AH,3 INT 10H ;int10 子功能 03 取当前光标位置 MOV CS:OLDCUR,DX ;当前光标位置存入CS:OLDCUR MOV AH,2 xor bh,bh MOV DX,CURSOR ;DX=CURSOR=45h,表示光标定位在1 行70 列 INT 10H ;int10 子功能 02 设置光标位置 MOV AH,2 INT 1AH ;INT 1AH 子功能 02 读取系统时钟,返回CH/CL/DH=BCD码小时/BCD码分钟/BCD码秒 PUSH DX PUSH CX POP BX ;小时分钟数给BX PUSH BX CALL SHOWBYTE ;调用子程序显示小时,小时在bh中 CALL SHOWCOLON ;调用子程序显示时间分隔符 ":" POP BX XCHG BH,BL ;分钟给bh CALL SHOWBYTE ;调用子程序显示分钟,bh是分钟数 CALL SHOWCOLON ;调用子程序显示时间分隔符 ":" POP BX ;秒数给bh CALL SHOWBYTE ;调用子程序显示秒数 MOV DX,CS:OLDCUR ;读取备份的光标位置 MOV AH,2 XOR BH,BH INT 10H ;int10 子功能 02 还原原来的光标位置 POP DX POP CX POP BX POP AX IRET ;中断返回SHOWBYTE PROC NEAR ;BCD值显示子程序,BCD值在BH中 PUSH BX ;压栈BX值,以防冲掉 MOV CL,4 ;以下代码BH中BCD十位值转ASCLL码 MOV AL,BH SHR AL,CL ADD AL,30H CALL SHOW ;调用子程序显示AL,当前AL为时间值十位上的数值 CALL CURMOVE ;调用子程序后移光标 POP BX ;还原BX值 MOV AL,BH ;以下代码BH中BCD个位值转ASCLL码 AND AL,0FH ADD AL,30H CALL SHOW ;调用子程序显示AL,当前AL为时间值个位上的数值 CALL CURMOVE ;调用子程序后移光标 RET SHOWBYTE ENDPSHOWCOLON PROC NEAR ;显示字符 ":" 子程序,用于时间分隔符 MOV AL,':' CALL SHOW ;调用子程序显示":" CALL CURMOVE ;调用子程序后移光标 RET SHOWCOLON ENDPCURMOVE PROC NEAR ;光标后移子程序 PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,3 MOV BH,0 INT 10H ;取光标位置 INC DL ;光标列位置加1 MOV AH,2 INT 10H ;设光标位置 POP DX POP CX POP BX POP AX RET CURMOVE ENDPSHOW PROC NEAR ;显示一个ASCLL字符子程序,AL为所显字符 PUSH AX PUSH BX PUSH CX MOV AH,09H MOV BX,attrib ;BH/BL=字符背景色/字符颜色 ,attrib=2fh=绿底白字 MOV CX,1 ;显示个数 1 INT 10H ;int 10 子功能 09 显示一个字符 POP CX POP BX POP AX RET SHOW ENDPGO: PUSH CS POP DS MOV AX,351CH ;取时钟中断 int 1c中断原入口 INT 21H MOV OLD1C,BX ;保存原中断向量 MOV BX,ES MOV OLD1C+2,BX MOV DX,OFFSET NEWINT1C ;设置新的时钟中断 int 1c 入...

本文地址:https://www.39baobao.com/show/29_19879.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

怎样编写高质量的测试用例测试用例是测试执行的指导;是测试执行的实体,是测试方法、测试质量、测试覆盖率的重要依据和表现形式;是团队内部交流以及交叉测试的依据,便于测试工作的跟踪管理,包括测试执行的...

怎样编写长方形与正方形的认识的教案3、教材内容的核心数学思想 (1)从学生已有的生活经验出发,让学生亲身经历将实际问题抽象成数学模型,并进行解释与应用的过程。 (2)有效的数学学习活动不能靠单纯的模仿和记忆,...

用C语言编写程序 10以内的加法随机出题楼上的是c++的吧。#includemain(){ int num1,num2,result,flag; result=-1; flag=1; while(flag) { num1=random(10); num2=random(10); printf("%d+%d=",num1,num2); scanf("%...

小学生十以内加减法运算程序c语言编写分练习模式和考试模式#include#include#includeusing namespace std; int a,b,dui_ti=0,cuo_ti=0,ti_mu=0; char ch; int sui_ji_shu_a()//生成随机数a { int a; a=rand()%9+1; return a; } int s...

大学80C51单片机编程题请使用汇编语言编写谢谢!1: MOV A,R1 ANL A,#0F0H XCH A,R2 ANL A,#0FH ORL A,R2 MOV R3,A 2: MOV R0,#30H MOV 40H,#0 MOV 41H,#0 MOV R2,#16 LOOP: MOV A,R0 ADD A,40H MOV 40H,A MOV A,41H ADDC...

汇编语言指令大全要详细的最佳答案IBM-PC汇编语言指令集 数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交...

汇编语言程序指令知多少谁能告诉我汇编语言程序指令并带有解释谢谢附表5。2 指令汇编格式 指令类型 指令汇编格式 指令功能简介 传送指令 MOV reg/mem,imm ;dest←src MOV reg/mem/seg,reg MOV reg/seg,mem MOV reg/mem,seg 交换指令 XCHG r...

汇编语言算术运算指令简单写了个两数相加的。 dseg segment num1 db 27H num2 db 45H dseg ends cseg segment assume cs:cseg,ds:dseg begin: mov ax,dseg mov ds,ax mov al,num1 add al,num2 d...

C语言就是一种可移植性比较强的语言用它编写的程序可以不经修改在你恐怕是看错了吧,据我所知c语言的可移植性可以说是在当今流行的语言中最差的了,因为c语言出现时期较早,它是以汇编语言为基础编写的,而汇编语言以cpu的指令为基础,可以说不同类...