微机原理与接口技术编程作业

上传人:繁星 文档编号:47105554 上传时间:2018-06-29 格式:PDF 页数:31 大小:719.68KB
返回 下载 相关 举报
微机原理与接口技术编程作业_第1页
第1页 / 共31页
微机原理与接口技术编程作业_第2页
第2页 / 共31页
微机原理与接口技术编程作业_第3页
第3页 / 共31页
微机原理与接口技术编程作业_第4页
第4页 / 共31页
微机原理与接口技术编程作业_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《微机原理与接口技术编程作业》由会员分享,可在线阅读,更多相关《微机原理与接口技术编程作业(31页珍藏版)》请在金锄头文库上搜索。

1、微机原理与接口技术作业微机原理与接口技术作业 学院:XXXX学院班级:XXXXXXXXXX 学号:XXXXXXXXXX 姓名:XX 1/30 13. 编写一个程序,统计在双字变量 DDVAR 的内容中二进制位是 1 的位数,并存 入变量 COUNT 中。 答: 【源码】 DATA SEGMENT DDVAR DD 0FFFFFFFH DDL EQU WORD PTR DDVAR DDH EQU WORD PTR DDVAR+2 COUNT DW 0 DATA ENDS STACK SEGMENT DW 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:

2、CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV DX,DDL MOV BX,8000H MOV CX,16 DDLL: CALL COUNT0 LOOP DDLL MOV DX,DDH MOV BX,8000H MOV CX,16 DDHH: CALL COUNT0 LOOP DDHH MOV AX,COUNT MOV BL,10 DIV BL ADD AL,0 ADD AH,0 PUSH AX MOV DL,AL MOV AH,02H INT 21H POP AX MOV DL,AH MOV AH,02H INT 21H MOV

3、AX,4C00H 2/30 INT 21H COUNT0 PROC NEAR MOV AX,DX OR AX,BX CMP AX,DX JZ DONE K: SHR BX,1 RET DONE: INC COUNT JMP K COUNT0 ENDP CODE ENDS END START 【源码说明】 预先在代码中设置双字变量 DDVAR 的数值为 0FFFFFFFH,即所有二进制位共有 28 个 1,可用于代码检验。双字可拆分成两个字,再分别逐位用 1 与各二进制位相 或的结果 1 与原二进制位数值进行比较, 若相等 (说明原先此处即为 1) 则 COUNT 值加 1,反之(说明与 1 相

4、或的结果 1 与原值不等,原值为 0)则 COUNT 值保持 不变。最后程序输出 COUNT 数值。 【运行结果】 可执行文件名为 4_13.exe, 如图 1 所示, 程序输出结果为 28, 表明双字变量 DDVAR 的内容中二进制位是 1 的位数共有 28 个,运行结果正确。 图 1 14. 假设有三个字变量、和,编写一个程序,它可判断它们能否构成一个三 角形,若能则 CF 为 1,否则 CF 为 0。 答: 【源码】 DATA SEGMENT A DW ? B DW ? C DW ? MSG1 DB Enter the first number (0-9) :,$ MSG2 DB 0AH

5、,0DH,Enter the second number (0-9) :,$ MSG3 DB 0AH,0DH,Enter the third number (0-9) :,$ RESULT0 DB 0AH,0DH,NO!,$ 3/30 RESULT1 DB 0AH,0DH,YES!,$ DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,MSG1 MOV AH,9 INT 21H MOV AH,1 INT 21H MOV AH,0 SUB AL,30H MOV A,AX LEA DX

6、,MSG2 MOV AH,9 INT 21H MOV AH,1 INT 21H MOV AH,0 SUB AL,30H MOV B,AX LEA DX,MSG3 MOV AH,9 INT 21H MOV AH,1 INT 21H MOV AH,0 SUB AL,30H MOV C,AX CLC ADD AX,B MOV BX,A SUB BX,AX JNC EXIT MOV AX,A 4/30 ADD AX,C MOV BX,B SUB BX,AX JNC EXIT MOV AX,A ADD AX,B MOV BX,C SUB BX,AX JNC EXIT LEA DX,RESULT1 JMP

7、 DISP EXIT: LEA DX,RESULT0 DISP: MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 【源码说明】 程序使用键盘输入,为简单起见,可输入三个 09 范围的数值进行比较,进 而检验程序的正确性。程序中分别用 A、B、C 中的一个值与另外两个数值之和作 差, 要构成三角形须同时有 A-(B+C) STU_NUM DB 0 ;The number of students STU_SEQ DB 100H DUP(0) ;The sorted result sequence ;Welcome Informat

8、ion WELCOME DB - ,0DH,0AH DB * Student Information Management System * ,0DH,0AH 13/30 DB - ,0DH,0AH DB 0. Add student information,0DH,0AH DB 1. Sort by the numbers of students,0DH,0AH DB 2. Sort by the scores of students,0DH,0AH DB 3. Show the average score,0DH,0AH DB 4. Show the statistics of score

9、s,0DH,0AH DB 5. Exit,0DH,0AH DB - ,0DH,0AH DB Please select one:,0DH,0AH,$ MSG0 DB Please input the ,$ MSG1 DB name: ,$ MSG2 DB class: ,$ MSG3 DB number: ,$ MSG4 DB score: ,$ MSG5 DB 060 (Not Pass): ,$ MSG6 DB 6070 (Pass): ,$ MSG7 DB 7080 (Normal): ,$ MSG8 DB 8090 (Good): ,$ MSG9 DB 90100 (Great): ,

10、$ MSG10 DB 100.0,$ TABLE DW CASE0,CASE1,CASE2,CASE3,CASE4,CASE5 BUFF DB 100,?,100 DUP(?) SLEN EQU BYTE PTR BUFF+1 NL6 DB 0 N67 DB 0 N78 DB 0 N89 DB 0 NG9 DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: ;Display a string DISPS MACRO STR PUSH AX PUSH DX LEA DX,STR MOV AH,09H INT 21H 14/30 PO

11、P DX POP AX ENDM ;Print n CRLF MACRO PUSH AX PUSH DX MOV AH,02H MOV DL,0DH INT 21H MOV DL,0AH INT 21H POP DX POP AX ENDM ;Memory copy MEMCPY MACRO DES,SRC,LEN PUSH AX PUSH CX PUSH SI PUSH DI MOV AX,DS MOV ES,AX MOV CL,LEN XOR CH,CH LEA SI,SRC LEA DI,DES CLD REP MOVSB POP DI POP SI POP CX POP AX ENDM

12、 MOV AX,DATA MOV DS,AX WELC: DISPS WELCOME MOV AH,01H INT 21H SUB AL,30H 15/30 XOR AH,AH MOV BX,AX CRLF CMP BL,5 JBE CASE0TO5 JMP WELC CASE0TO5: SHL BX,1 JMP TABLEBX CASE0: CALL INPUT_INFO JMP WELC CASE1: CALL NUM_SORT CALL DISP_STU JMP WELC CASE2: CALL SCORE_SORT CALL DISP_STU JMP WELC CASE3: CALL

13、GET_AVG JMP WELC CASE4: CALL GET_STA JMP WELC CASE5: MOV AH,4CH INT 21H ;* ;GET_STU ;* GET_STU PROC NEAR PUSH AX PUSH CX LEA BX,STU_DB MOV CL,5 SHL AX,CL ADD BX,AX POP CX POP AX RET 16/30 GET_STU ENDP ;* ;INPUT_INFO ;* INPUT_INFO PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV AL,STU_NUM LEA BX,STU_DB

14、 MOV CL,5 SHL AX,CL ADD BX,AX INPUT_NAME: DISPS MSG0 DISPS MSG1 CRLF LEA DX,BUFF MOV AH,0AH INT 21H CMP SLEN,14 JAE INPUT_NAME MEMCPY BX.XNAME,BUFF+2,SLEN CRLF INPUT_CLASS: DISPS MSG0 DISPS MSG2 CRLF LEA DX,BUFF MOV AH,0AH INT 21H CMP SLEN,14 JAE INPUT_CLASS MEMCPY BX.CLASS,BUFF+2,SLEN CRLF INPUT_NUM: DISPS MSG0 DISPS MSG3 17/30 CRLF LEA DX,BUFF MOV AH,0AH INT 21H CALL STR_NUM MOV BX.NUM,AX CRLF INPUT_SCORE: DISPS MSG0 DISPS MSG4 CRLF LEA DX,BUFF MOV AH,0AH INT 21H CALL SCORE_FMT MOV BX.SCORE,AX CRLF INC STU_NUM POP DX POP CX POP BX POP AX RET INPUT_INFO ENDP ;* ;STR_NUM ;*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号