




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一 这是一个判断某一年是否为润年的程序 运行可执行程序 Ifleap exe 后 输入具体的年 份 可输出是本年是否为闰年的提示信息 DATA SEGMENT 定义数据段 INFON DB 0DH 0AH PLEASE INPUT A YEAR 声明空间存储输入提示信息 其中 0d 回车 0a 换行 Y DB 0DH 0AH THIS IS A LEAP YEAR 声明空间存储是闰年提示信息 同上另起一行输出 N DB 0DH 0AH THIS IS NOT A LEAP YEAR 声明空间存储不是闰年提示信息 同上另 起一行输出 W DW 0 声明空间存储输入年份解析后生成的年份数字 BUF DB 8 DB DB 8 DUP 声明空间作为缓冲区 总共 10 个字节 第一个表示准备接受的字 DATA ENDS STACK SEGMENT STACK DB 200 DUP 0 STACK ENDS 定义一个栈 200 字节 CODE SEGMENT ASSUME DS DATA SS STACK CS CODE START MOV AX DATA MOV DS AX 指定堆栈 LEA DX INFON 在屏幕上显示提示信息 MOV AH 9 INT 21H 将 infon 开始的字符串输出到屏幕 LEA DX BUF 从键盘输入年份字符串 MOV AH 10 INT 21H MOV CL BUF 1 获取实际输入长度 LEA DI BUF 2 获取字符串首地址 CALL DATACATE 调用子程序 将输入字符串传化为年份数字 CALL IFYEARS 调用子程序 判断是否闰年 JC A1 如果进位标记 C 为 1 则跳转到 a1 LEA DX N 否则输出不是闰年信息 MOV AH 9 INT 21H JMP EXIT A1 LEA DX Y 输出是闰年信息 MOV AH 9 INT 21H EXIT MOV AH 4CH 程序结束 INT 21H DATACATE PROC NEAR 指明该子程序在主程序段内 PUSH CX 备份 DEC CX LEA SI BUF 2 将 buf 中第一个字符 即 buf 的第三个字节数据 的地址赋给 si TT1 INC SI 循环 使得 si 指向最后一个字符 即 buf 中回车符前面的一个 LOOP TT1 LEA SI CX DI POP CX 回复 cx MOV DH 30H 辅助数据 用来将数字字符对应的 ASCII 码转换为其代表的数字本身 MOV BL 10 辅助数据 用来在每进一位时使得 ax 乘以 10 MOV AX 1 ax 用来装对应位的权值 L1 PUSH AX 备份 ax SUB BYTE PTR SI DH 将单个字符转换为对应的数字 MUL BYTE PTR SI 将单个字符转换为对应的数字 ADD W AX 加到结果上 易知当所有位都加完时 即是我们想要的年份数字 POP AX 恢复 ax MUL BL 权值乘以 10 DEC SI si 指向更高一位数字 LOOP L1 RET 子程序返回 DATACATE ENDP IFYEARS PROC NEAR 指明该子程序段在主程序段内 该子程序用于检测是否是闰年 接收 年份数据 改变 C 标记位表示不同结果 1 push bx 备份 bx 2 push cx 备份 cx 下面 cx 用于存储原始年份数据 3 push dx 备份 dx 下面 dx 用于存储除法余数 4 mov ax w 获取年份数据 5 mov cx ax 将年份数据备份到 cx 因为后面做除法时 ax 值将 会改变 6 mov dx 0 因为被除数要为 32 字节 高位在 dx 本程序中 为 0 7 mov bx 100 这三行判断是否能被 100 整除 8 div bx 9 cmp dx 0 10 jnz lab1 若不能被 100 整除 跳转到 lab1 11 mov ax cx 否则判断能否被 400 整除 12 mov bx 400 13 div bx 14 cmp dx 0 15 jz lab2 若能表示是闰年 跳转到 lab2 16 clc 否则不是闰年 将 C 标记位清零 并跳转到 lab3 17 jmp lab3 18 lab1 mov ax cx 不能被 100 整除时跳转到此处 进一步判断能否 被 4 整除 19 mov dx 0 20 mov bx 4 21 div bx 22 cmp dx 0 23 jz lab2 若不能被 100 整除但能能被 4 整除是闰年 跳转到 lab2 24 clc 若不能被 100 整除也不能被 4 整除不是闰年 将 c 标志位 置 0 并跳转到 lab3 25 jmp lab3 26 lab2 stc 若是闰年跳转到此处将 c 标志位置 1 27 lab3 pop dx 相应寄存器恢复 28 pop cx 29 pop bx 30 ret 子程序返回 31 ifyears endp 32 code ends 33 end start 34 MOV AX W MOV CX AX MOV DX 0 MOV BX 4 DIV BX CMP DX 0 JNZ LAB1 MOV AX CX MOV BX 100 DIV BX CMP DX 0 JNZ LAB2 MOV AX CX MOV BX 400 DIV BX CMP DX 0 JZ LAB2 LAB1 CLC JMP LAB3 LAB2 STC LAB3 POP DX POP CX POP BX RET IFYEARS ENDP CODE ENDS END START 二 这是一个显示系统日期和时间的程序 运行时 在出现的提示信息中输入大写字母 D 可显示系统当前日期 输入大写字母 T 可显示系统当前时间 输入大写字母 Q 可结束程序 STACK SEGMENT STACK DW 200 DUP STACK ENDS DATA 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 PLEASE INPUT DATE D OR TIME T OR QUIT Q DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA ES DATA SS STACK START 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 21H DATE 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 0018H REPEA MOV CX 0FFFFH 延时 REPEAT1 LOOP REPEAT1 DEC BX JNZ REPEA MOV AH 01H 读键盘缓冲区字符到AL寄存器 INT 16H JE DISPLAY JMP START MOV AX 4C00H INT 21H RET DATE ENDP TIME 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 0018H RE MOV CX 0FFFFH REA LOOP REA DEC BX JNZ RE MOV AH 01H INT 16H JE DISPLAY1 JMP START MOV AX 4C00H INT 21H RET TIME ENDP BCDASC 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 RET BCDASC ENDP BCDASC1 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 RET BCDASC1 ENDP CODE ENDS END START 三 这是一个显示系统时间的程序 运行时 在屏幕的右上角将以 时 分 秒 的 形式显示本机系统的时间 该程序只能在 DOS 下运行 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 ENDP SHOWCOLON PROC NEAR MOV AL CALL SHOW CALL CURMOVE RET SHOWCOLON ENDP CURMOVE 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 ENDP SHOW 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 ENDP GO 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 四 这是一个网上电子表 DATA SEGMENT 定义PLEASE等提示信息 STR DB 20 DB 50H 7 0 0 DB 6CH 7 0 1 DB 65H 7 0 1 DB 61H 7 0 1 DB 73H 7 0 1 DB 65H 7 0 1 DB 70H 7 1 10 DB 72H 7 0 1 DB 65H 7 0 1 DB 73H 7 0 1 DB 73H 7 0 1 DB 53H 7 0 2 DB 6BH 7 0 2 DB 65H 7 0 1 DB 79H 7 0 1 DB 65H 7 0 2 DB 78H 7 0 1 DB 69H 7 0 1 DB 74H 7 0 1 DB 21H 7 0 1 定义0 9十个图形数字 S0 DB 6 DB 5FH 7 0 0 DB 7CH 7 1 1 DB 7CH 7 1 0 DB 5FH 7 0 1 DB 7CH 7 0 1 DB 7CH 7 1 0 SY DB 2 DB 7CH 7 1 0 DB 7CH 7 1 0 S2 DB 5 DB 5FH 7 0 0 DB 7CH 7 1 1 DB 5FH 7 0 1 DB 7CH 7 1 1 DB 5FH 7 0 1 S3 DB 5 DB 5FH 7 0 0 DB 7CH 7 1 1 DB 5FH 7 0 1 DB 7CH 7 1 1 DB 5FH 7 0 1 S4 DB 4 DB 7CH 7 1 0 DB 5FH 7 0 1 DB 7CH 7 1 1 DB 7CH 7 1 0 S5 DB 5 DB 5FH 7 0 0 DB 7CH 7 1 1 DB 5FH 7 0 1 DB 7CH 7 1 1 DB 5FH 7 0 1 S6 DB 6 DB 5FH 7 0 0 DB 7CH 7 1 1 DB 5FH 7 0 1 DB 7CH 7 1 1 DB 5FH 7 0 1 DB 7CH 7 0 1 S7 DB 3 DB 5FH 7 0 0 DB 7CH 7 1 1 DB 7CH 7 1 0 S8 DB 7 DB 7CH 7 1 0 DB 5FH 7 1 1 DB 7CH 7 1 1 DB 5FH 7 0 1 DB 7CH 7 1 1 DB 5FH 7 0 1 DB 7CH 7 0 1 S9 DB 6 DB 7CH 7 1 0 DB 5FH 7 1 1 DB 7CH 7 1 1 DB 5FH 7 0 1 DB 7CH 7 1 1 DB 5FH 7 0 1 S11 DB 2 DB 03H 7 1 0 DB 03H 7 1 0 DATA ENDS STACK SEGMENT DB 200 DUP 0 STACK ENDS CODE SEGMENT ASSUME CS CODE SS STACK DS DATA START MOV AX DATA MOV DS AX MOV AH 0 设置显示方式 MOV AL 4 INT 10H MOV AH 0BH 置彩色调板 MOV BH 0 MOV BL 1 INT 10H MOV AH 0BH 置彩色调板 MOV BH 1 MOV BL 4 INT 10H MOV AH 2 取系统时间 INT 1AH MOV AX 0 MOV BX 0 MOV AH CH 取系统时间 MOV AL CL 保存分钟 MOV BH DH 保存秒 MOV BL DL 保存百分之一秒 TT PUSH AX PUSH BX MOV AH 0 MOV AL 4 INT 10H MOV AH 0BH MOV BH 0 MOV BL 1 INT 10H MOV AH 0BH MOV BH 1 MOV BL 4 INT 10H MOV AH 1 读键盘缓冲区字符 INT 16H JZ WW MOV AH 8 从键盘输入字符 INT 21H CMP AL S 输入S 结束程序 JE TU WW POP BX POP AX CALL XIAN 调用显示子程序 PUSH AX QU MOV AH 2 取系统时间 INT 1AH CMP BH DH JE QU POP AX INC BH 对时间进行加1 CMP BH 100 JL TT MOV BH 0 INC AL CALL BEEP CMP AL 100 JL TT MOV AL 0 INC AH CMP AH 24 JL TT MOV AH 0 JMP TT TU MOV AH 4CH INT 21H RET XIAN PROC 对时间值进行处理并显示的子程序 PUSH SI PUSH DI PUSH DX PUSH CX PUSH BX PUSH AX POP AX PUSH AX MOV BX AX MOV AX 0 MOV AL BH MOV CL 4 SHR AL CL MOV BL AL MOV DH 10 MOV DL 2 CALL FF POP AX PUSH AX MOV BX AX MOV AX 0 MOV AL BH AND AL 0FH MOV BL AL MOV DH 10 MOV DL 6 CALL FF MOV DH 10 MOV DL 10 MOV BL 10 CALL FF POP AX PUSH AX MOV CL 4 SHR AL CL MOV BL AL MOV DH 10 MOV DL 14 CALL FF POP AX PUSH AX AND AL 0FH MOV BL AL MOV DH 10 MOV DL 18 CALL FF MOV DH 10 MOV DL 22 MOV BL 10 CALL FF POP AX POP BX PUSH BX PUSH AX MOV AX 0 MOV AL BH MOV CL 4 SHR AL CL MOV BL AL MOV DH 10 MOV DL 26 CALL FF POP AX POP BX PUSH BX PUSH AX MOV AL BH AND AL 0FH MOV BL AL MOV DH 10 MOV DL 30 CALL FF MOV DH 0 MOV DL 15 MOV BL 22 CALL FF POP AX POP BX POP CX POP DX POP DI POP SI RET XIAN ENDP FF PROC 显示具体数值 PUSH AX PUSH BX PUSH CX PUSH DX CMP BL 0 JE L0 CMP BL 1 JE L1 CMP BL 2 JE L2 CMP BL 3 JE L3 CMP BL 4 JE L4 CMP BL 5 JE L5 CMP BL 6 JE L6 CMP BL 7 JE L7 CMP B
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 意识形态教育效果评估-洞察及研究
- 2025混凝土搅拌站购销合同
- 2025装载机租赁合同
- 2025合同管理类合同文本适用与填写培训
- 超聚变招聘笔试题库2025
- 2025年标准期限劳动合同范本(合同样式)
- 2025年度资金借款合同协议书
- 2025年北京市买卖合同范本
- 2025仓储租赁合同范本协议书
- 2025物业管理公司物业服务合同协议
- 新能源发电技术 课件 第一章-新能源发电概述
- 《智能网联汽车运行与维护》中职技工全套教学课件
- 《遥感原理与应用》全册配套完整课件
- 麻醉科医师晋升副主任医师病例分析专题报告三篇
- 智能云服务交付工程师认证考试题库(网大版)-中(多选题)
- 中医医疗技术手册2013普及版
- 古仁人之心作文共九篇
- 供应室医疗废物的分类和处理
- 《中医常用护理技术基础》课件-八纲辨证施护
- 农机防灾减灾培训课件
- 低压电工作业第六章电力线路
评论
0/150
提交评论