《计算机硬件技术基础》实验答案程序.doc

上传人:h**** 文档编号:675595 上传时间:2018-10-27 格式:DOC 页数:31 大小:360.50KB
下载 相关 举报
《计算机硬件技术基础》实验答案程序.doc_第1页
第1页 / 共31页
《计算机硬件技术基础》实验答案程序.doc_第2页
第2页 / 共31页
《计算机硬件技术基础》实验答案程序.doc_第3页
第3页 / 共31页
《计算机硬件技术基础》实验答案程序.doc_第4页
第4页 / 共31页
《计算机硬件技术基础》实验答案程序.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、第 1 页 共 31 页实 验 一 : 简 单 程 序 设 计 实 验( 1) 编 写 一个 32 位 无 符号 数 除 法的程 序 , 要求 将存 放 在 NUM1 中 的 32 位无 符 号 数与存 放 在 NUM2 中 的 16 位 无 符号 数 相 除,结 果 存 放在 NUM3 和 NUM4 中 。程序流程图略。 参考源程序:DATA SEGMENTNUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ?NUM4 DW ? DATA ENDSCODE SEGMENTASSUME DS:DATA, CS:CODESTART: MOV AX,DATA ;数据段寄

2、存 器初始化MOV DS,AXMOV AX, WORD PTR NUM1MOV DX, WORD PTR NUM1+2DIV NUM2MOV NUM3,AX MOV NUM4,DXMOV AH,4CH ;正常返回D OS系统INT 21H CODE ENDSEND START( 2) 编 写一个 拆 字 程序。 要 求将 存放 在 ARY 单 元 的 2 位 十六 进 制 数 X 1X2 拆 为 X1 和 X2 两 部 分 , 并以 0X1 和 0X2 的 形 式 分 别存入 ARY+1 和 ARY+2 单元 中 。程序流程图略。 参考源程序:DATA SEGMENT ARY DB 2AH,?

3、,?DATA ENDSCODE SEGMENTASSUME DS:DATA, CS:CODE START: MOV AX,DATAMOV DS,AXMOV SI,OFFSET ARY ;取AR Y的偏 移地址MOV AL,SI ;取1 6进制数 至AL第 2 页 共 31 页MOV BL,ALAND AL,0F0H ;取1 6进制数 的高四位 ,即 X1SHR AL,4MOV SI+1,AL ;存0 X1MOV AL,BLAND AL,0FH ;取1 6进制数 的低四位 ,即 X2MOV SI+2,AL ;存0 X2MOV AH,4CH INT 21HCODE ENDSEND START第 3

4、 页 共 31 页实 验 二 : 分 支 程 序 设 计 实 验( 1) 编 写 一个 字 符 比较程 序 , 比较 3 个 无 符 号 字节 数 A, B, C 的 大 小 ,并 根 据 比较结 果 对 变 量 K 赋 值 :如 果 3 个 数不 相 等 ,则 K=0 ;如 果 3 个 数中 有 两 个相等 , 则 K=1; 如 果 3 个 数都 相 等 ,则 K=2 。程序流程图略。 参考源程序:DATA SEGMENT ;定义 待比较数A 、 B、 C,比较 结果KA DB 20H B DB 20H C DB 20H K DB ?DATA ENDSCODE SEGMENTASSUME C

5、S:CODE,DS:DATA START: MOV AX,DATAMOV DS,AX MOV AL,ACMP AL,B ;对A 、B 进行比较 ,不 相等则转 到C OMP2JNE COMP2 ;相等则 比较A 、CCMP AL,CJNE K1 ;A 、 C不 相等则K=1JMP K2 ;A 、 C相 等则K =2COMP2: MOV BL,B CMP BL,CJE K1 ;对B 、 C进行比较 ,相 等则K =1CMP AL,CJE K1 ;对A 、C进行比较 , 相等则K=1K0: MOV K,0JMP EXIT K1: MOV K,1JMP EXIT K2: MOV K,2EXIT: M

6、OV AH,4CH第 4 页 共 31 页INT 21HCODE ENDSEND START( 2) 编 写 一个 能 实 现下列 表 达 式的程 序 :N = A + B A B 设 A, B, C 为 小 于 128 的 正 整 数 。 A B + C程序流程图略。 参考源程序:DATA SEGMENTA BA DB 22H ;定义 A 、 B、 C、N B DB 10HC DB 01H N DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX,DATAMOV DS,AXMOV AL, A CMP AL, BJG CA

7、LCUL ;A 小于或 等于 B 则 N =A+BADD AL,B JMP EXITCALCUL: SUB AL, B ADC AL, CEXIT: MOV N, AL MOV AH,4CH INT 21HCODE ENDSEND START第 5 页 共 31 页实 验 三 循 环 程 序 设 计 实 验( 1) 将 字 符串 STRN( 以 “$”结 尾 ) 中的 每 一 个字符 均 加 上偶校 验 位 , 并统 计 有 多少个 字 符 因 含 有 奇数个 “1”而 加 上了 校 验 位。统 计 结 果存于 N单 元 中 。程序流程图略。 参考源程序:DATA SEGMENTSTRN DB

8、 What$ ;任意定义一个字串,以 “$”结尾COUNT EQU $-STRN N DB ?BUF DB COUNT DUP(?) DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX, DATAMOV DS, AX MOV AX, DATA MOV ES, AXLEA SI, STRN LEA DI, BUFMOV CX, COUNT MOV AL, 0LP1: MOV BL, SI ;逐个取字符进行判断AND BL, BL ;自己和自己做与运算JP NEXT;根据 PF 标志位的变化进行跳转INC ALOR BL, 80H

9、NEXT: MOV DI, BLINC SI INC DI LOOP LP1MOV N, AL MOV AH, 4CHINT 21HCODE ENDSEND START( 2) 在 FIRST 开 始 的 一片 连 续 的数据 区 中 存放着 100 个 数据 , 编 写一个 程 序 ,统计 第 1第 6 页 共 31 页个 数 据 0之 前 的 数 据个数 。 程序流程图略。 参考源程序:DATA SEGMENTFIRST DB 10H,24H,34H, 73H,20H,44H,03H,36H,41H ;任取 9 个数做演示COUNT EQU $-FIRST NUM DB ?DATA END

10、SCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX,DATAMOV DS,AXMOV DL, 0 ;计数值初始为 0MOV CX,COUNTMOV BX, OFFSET FIRSTLP1: MOV AL, BX ;每次取一个数,与 0 比较CMP AL, 00H JNE NEXTJMP EXIT ;找到 0 则退出NEXT: INC DL ;没找到 0 则计数值加 1INC BX LOOP LP1EXIT: MOV NUM, DL MOV AH, 4CH INT 21HCODE ENDSEND START第 7 页 共 31 页实 验 四 :

11、子 程 序 设 计 实 验将 BUF开 始 的 10个 单 元中 两 位 十六进 制 数 转换成 ASCII码 , 并 在 屏 幕上显 示 出 来。 要求 码 型 转 换 通 过子程 序 HEXASC实 现 , 参 数传 送 采 用寄存 器 传 送方式 。程序流程图略。 参考源程序 : (1)实现方法一:远过程调用 DATA SEGMENTBUF DB 10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2HCOUNT EQU $-BUF ;定义任意长度的一段 BUF DATA ENDSSTACK1 SEGMENT STACKDB 100 DUP(?) ;设置足够

12、深度的栈区STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AXMOV SI,OFFSET BUF MOV CX,COUNTAGAIN: MOV AL,SI ;逐个取数MOV BL,ALSHR AL,4AND AL,0FH ;先对高字节部分转换(寄存器 AL 传参)CALL FAR PTR HEXASC ;调用子程序MOV DL,ALMOV AH,02H ;显示高字节部分对应的字符INT 21HMOV AL,BLAND AL,0FH ;再对低字节部分转换(寄存器 AL 传参)CALL

13、 FAR PTR HEXASC ;调用子程序MOV DL,ALMOV AH,02H ;显示低字节部分对应的字符INT 21HMOV DL,20HMOV AH,02H ;显示空格INT 21H第 8 页 共 31 页INC SILOOP AGAINMOV AH,4CH INT 21HCODE ENDSCODEB SEGMENT ASSUME CS:CODEBHEXASC PROC FARCMP AL,09H ;判断是不是数字JA HEXATOF ;是字母则转到 HEXATOFADD AL,30H ;是数字则对应到数字的 ASCII 码JMP ENDHEXHEXATOF:ADD AL,37H ;是

14、字母则对应到字母的 ASCII 码ENDHEX: RET HEXASC ENDP CODEB ENDSEND START(2)实现方法二:近过程调用DATA SEGMENTBUF DB 10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2HCOUNT EQU $-BUF ;定义任意长度的一段 BUF DATA ENDSSTACK1 SEGMENT STACKDB 100 DUP(?) ;设置足够深度的栈区STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS

15、,AXMOV SI,OFFSET BUF MOV CX,COUNTAGAIN: MOV AL,SI ;逐个取数MOV BL,ALSHR AL,4AND AL,0FH ;先对高字节部分做转换CALL HEXASC第 9 页 共 31 页MOV DL,AL ;显示高字节部分对应的字符MOV AH,02H INT 21HMOV AL,BLAND AL,0FH ;再对低字节部分做转换CALL HEXASCMOV DL,AL ;显示低字节部分对应的字符MOV AH,02H INT 21HMOV DL,20H ;显示空格MOV AH,02H INT 21HINC SI ;继续循环或退出LOOP AGAIN

16、MOV AH,4CH INT 21HHEXASC PROC NEAR CMP AL,09HJA HEXATOF ADD AL,30H JMP ENDHEXHEXATOF:ADD AL,37H ENDHEX: RETHEXASC ENDPCODE ENDSEND START第 10 页 共 31 页实 验 五 : DOS 中 断 调 用 实 验( 1) 如 果 从键 盘 上 依次输 入 的 是一个 数 字 和一个 字 母 ,则输 出 “RIGHT”标 记 后 结 束程 序 , 否 则 输 出标记 “ERROR”后 转 向 原出错 处 重 做。试 编 程 实现该 功 能 。程序流程图略。 参考源程

17、序 :DATA SEGMENTMSG DB 0AH,0DH,RIGHT,0AH,0DH,$ WRN DB 0AH,0DH,ERROR,0AH,0DH,$DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX,DATAMOV DS,AXAGAIN: MOV AH,01H ;等待用户输入 1 个字符并显示INT 21HCMP AL,39H JA EMSG CMP AL,30HJB EMSG ;判断输入是否是数字,不是则报错MOV AH,01H ;等待用户输入 1 个字符并显示INT 21H CMP AL,A JB EMSGCMP AL,Z ; 判断输入是否是大写字母, 不是则继续JB EXIT ;判断是不是小写字母CMP AL,a JB EMSG CMP AL,zJB EXIT ;不是字母则报错,是字母则转到 EXITEMSG: LEA DX,WRN MOV AH,09H INT 21HJMP AGAINEXIT: MOV DX,OFFSET MSGMOV AH,09H ;显示 “RIGHT”并退出INT 21HMOV AH,4CH

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

当前位置:首页 > 教育教学资料库 > 参考答案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。