2022年《计算机硬件技术基础》实验答案程序 .pdf
《2022年《计算机硬件技术基础》实验答案程序 .pdf》由会员分享,可在线阅读,更多相关《2022年《计算机硬件技术基础》实验答案程序 .pdf(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验一:简单程序设计实验(1)编写一个32 位无符号数除法的程序,要求将存放在NUM1 中的 32 位无符号数与存放在 NUM2 中的 16 位无符号数相除,结果存放在NUM3 和 NUM4 中。程序流程图略。参考源程序:DATA SEGMENT NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA ;数据段寄存器初始化MOV DS,AX MOV AX, WORD PTR NUM1 MOV DX, WORD PTR
2、 NUM1+2 DIV NUM2 MOV NUM3,AX MOV NUM4,DX MOV AH,4CH ;正常返回 DOS系统INT 21H CODE ENDS END START (2)编写一个拆字程序。要求将存放在ARY 单元的 2 位十六进制数X1X2 拆为 X1 和 X2 两部分,并以0X1 和 0X2 的形式分别存入ARY+1 和 ARY+2 单元中。程序流程图略。参考源程序:DATA SEGMENT ARY DB 2AH,?,? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA MOV DS,AX M
3、OV SI,OFFSET ARY ;取ARY 的偏移地址MOV AL,SI ;取16进制数至 AL精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 32 页 - - - - - - - - - - MOV BL,AL AND AL,0F0H ;取16进制数的高四位,即X1SHR AL,4 MOV SI+1,AL ;存0X1MOV AL,BL AND AL,0FH ;取16进制数的低四位,即X2MOV SI+2,AL ;存0X2MOV AH,4CH INT 21H CODE ENDS END ST
4、ART 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 32 页 - - - - - - - - - - 实验二:分支程序设计实验(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 ? D
5、ATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,A CMP AL,B ;对 A、B进行比较,不相等则转到COMP2 JNE COMP2 ;相等则比较A、CCMP AL,C JNE K1 ;A、C不相等则 K=1JMP K2 ;A、C相等则 K=2COMP2: MOV BL,B CMP BL,C JE K1 ;对 B、 C进行比较,相等则K=1 CMP AL,C JE K1 ;对 A、C进行比较,相等则K=1K0: MOV K,0 JMP EXIT K1: MOV K,1 JMP E
6、XIT K2: MOV K,2 EXIT: MOV AH,4CH 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 32 页 - - - - - - - - - - INT 21H CODE ENDS END START (2)编写一个能实现下列表达式的程序:?N = ?A + BA B设 A,B, C 为小于 128 的正整数。?A - B +C程序流程图略。参考源程序:DATA SEGMENTA BA DB 22H ;定义 A、B、C、N B DB 10H C DB 01H N DB ? D
7、ATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL, A CMP AL, B JG CALCUL ;A 小于或等于B 则 N=A+B ADD AL,B JMP EXIT CALCUL: SUB AL, B ADC AL, C EXIT: MOV N, AL MOV AH,4CH INT 21H CODE ENDS END START 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 3
8、2 页 - - - - - - - - - - 实验三循环程序设计实验(1)将字符串 STRN (以 “ $”结尾)中的每一个字符均加上偶校验位,并统计有多少个字符因含有奇数个“ 1”而加上了校验位。统计结果存于N单元中。程序流程图略。参考源程序:DATA SEGMENT STRN DB What$ ;任意定义一个字串,以“ $” 结尾COUNT EQU $-STRN N DB ? BUF DB COUNT DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AX, D
9、ATA MOV ES, AX LEA SI, STRN LEA DI, BUF MOV CX, COUNT MOV AL, 0 LP1: MOV BL, SI ;逐个取字符进行判断AND BL, BL ;自己和自己做与运算JP NEXT ;根据 PF 标志位的变化进行跳转INC AL OR BL, 80H NEXT: MOV DI, BL INC SI INC DI LOOP LP1 MOV N, AL MOV AH, 4CH INT 21H CODE ENDS END START (2)在 FIRST 开始的一片连续的数据区中存放着100 个数据,编写一个程序,统计第1精品资料 - - -
10、欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 32 页 - - - - - - - - - - 个数据 0之前的数据个数。程序流程图略。参考源程序:DATA SEGMENT FIRST DB 10H,24H,34H, 73H,20H,44H,03H,36H,41H ;任取 9 个数做演示COUNT EQU $-FIRST NUM DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV DL, 0 ;计
11、数值初始为0 MOV CX,COUNT MOV BX, OFFSET FIRST LP1: MOV AL, BX ;每次取一个数,与0 比较CMP AL, 00H JNE NEXT JMP EXIT ;找到 0 则退出NEXT: INC DL ;没找到 0 则计数值加1INC BX LOOP LP1 EXIT: MOV NUM, DL MOV AH, 4CH INT 21H CODE ENDS END START 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 32 页 - - - - - -
12、 - - - - 实验四:子程序设计实验将BUF 开始的 10个单元中两位十六进制数转换成ASCII 码,并在屏幕上显示出来。要求码型转换通过子程序HEXASC 实现,参数传送采用寄存器传送方式。程序流程图略。参考源程序 : (1)实现方法一:远过程调用DATA SEGMENT BUF DB 10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2H COUNT EQU $-BUF ;定义任意长度的一段BUF DATA ENDS STACK1 SEGMENT STACK DB 100 DUP(?) ;设置足够深度的栈区STACK1 ENDS CODE SEGMENT
13、 ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF MOV CX,COUNT AGAIN: MOV AL,SI ;逐个取数MOV BL,AL SHR AL,4 AND AL,0FH ;先对高字节部分转换(寄存器AL 传参)CALL FAR PTR HEXASC ;调用子程序MOV DL,AL MOV AH,02H ;显示高字节部分对应的字符INT 21H MOV AL,BL AND AL,0FH ;再对低字节部分转换(寄存器AL 传参)CALL FAR PTR HEXASC ;调用子程
14、序MOV DL,AL MOV AH,02H ;显示低字节部分对应的字符INT 21H MOV DL,20H MOV AH,02H ;显示空格INT 21H 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 32 页 - - - - - - - - - - INC SI LOOP AGAIN MOV AH,4CH INT 21H CODE ENDS CODEB SEGMENT ASSUME CS:CODEB HEXASC PROC FAR CMP AL,09H ;判断是不是数字JA HEXATOF
15、 ;是字母则转到HEXATOFADD AL,30H ;是数字则对应到数字的ASCII 码JMP ENDHEX HEXATOF:ADD AL,37H ;是字母则对应到字母的ASCII 码ENDHEX: RET HEXASC ENDP CODEB ENDS END START (2)实现方法二:近过程调用DATA SEGMENT BUF DB 10H,2FH,0D0H,0FEH,33H,0F0H,20H,10H,3DH,0A2H COUNT EQU $-BUF ;定义任意长度的一段BUF DATA ENDS STACK1 SEGMENT STACK DB 100 DUP(?) ;设置足够深度的栈区
16、STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF MOV CX,COUNT AGAIN: MOV AL,SI ;逐个取数MOV BL,AL SHR AL,4 AND AL,0FH ;先对高字节部分做转换CALL HEXASC 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 32 页 - - - - - - - - - - MOV DL,
17、AL ;显示高字节部分对应的字符MOV AH,02H INT 21H MOV AL,BL AND AL,0FH ;再对低字节部分做转换CALL HEXASC MOV DL,AL ;显示低字节部分对应的字符MOV AH,02H INT 21H MOV DL,20H ;显示空格MOV AH,02H INT 21H INC SI ;继续循环或退出LOOP AGAIN MOV AH,4CH INT 21H HEXASC PROC NEAR CMP AL,09H JA HEXATOF ADD AL,30H JMP ENDHEX HEXATOF:ADD AL,37H ENDHEX: RET HEXASC
18、ENDP CODE ENDS END START 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 32 页 - - - - - - - - - - 实验五:DOS 中断调用实验(1)如果从键盘上依次输入的是一个数字和一个字母,则输出“ RIGHT” 标记后结束程序,否则输出标记“ ERROR ” 后转向原出错处重做。试编程实现该功能。程序流程图略。参考源程序 : DATA SEGMENT MSG DB 0AH,0DH,RIGHT,0AH,0DH,$ WRN DB 0AH,0DH,ERROR,0
19、AH,0DH,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX AGAIN: MOV AH,01H ;等待用户输入1 个字符并显示INT 21H CMP AL,39H JA EMSG CMP AL,30H JB EMSG ;判断输入是否是数字,不是则报错MOV AH,01H ;等待用户输入1 个字符并显示INT 21H CMP AL,A JB EMSG CMP AL,Z ;判断输入是否是大写字母,不是则继续JB EXIT ;判断是不是小写字母CMP AL,a JB EMSG CMP AL,
20、z JB EXIT ;不是字母则报错,是字母则转到EXIT EMSG: LEA DX,WRN MOV AH,09H INT 21H JMP AGAIN EXIT: MOV DX,OFFSET MSG MOV AH,09H ;显示 “ RIGHT”并退出INT 21H MOV AH,4CH 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 32 页 - - - - - - - - - - INT 21H CODE ENDS END START (2)编写一程序分类统计字符个数:即接收键入的一串字
21、符(字符个数不超过50个,该字符串用回车作为结束),并按数字、字母和其它字符分类计数,然后将结果存入digit、letter 和other 3个存储单元中,并显示结果。程序流程图略。参考源程序 : DATA SEGMENT MSG1 DB 0AH, 0DH, Number of digit:,20H,$ MSG2 DB 0AH, 0DH, Number of letters:, 20H,$ MSG3 DB 0AH, 0DH, Number of other characters:, 20H, $ BUF DB 50 DB 0 DB 50 DUP(?) ;设置足够深的栈区DIGIT DB ? L
22、ETTER DB ? OTHER DB ? DATA ENDS STACK1 SEGMENT STACK DB 100 DUP(?) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX MOV AH,0AH ;等待用户输入字符串并显示MOV DX,OFFSET BUF INT 21H MOV SI, OFFSET BUF MOV CL,SI+1 MOV CH,00H MOV AL,00H MOV AH,00H MOV BH,00H AGAIN: MOV BL,SI+2 CM
23、P BL,30H JB OTH ;ASCII 码小于 30H 则归类为 “ 其它 ”CMP BL,3AH 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 32 页 - - - - - - - - - - MOV LETTER, BH MOV OTHER, ALMOV DX, OFFSET MSG1 MOV AH,09H INT 21H MOV AL, DIGIT CALL DISP;显示 “ 数字 ” 有多少个MOV DX, OFFSET MSG2 MOV AH,09H INT 21H MO
24、V AL, LETTER CALL DISP;显示 “ 字母 ” 有多少个MOV DX, OFFSET MSG3 MOV AH,09H INT 21H MOV AL, OTHER CALL DISP;显示 “ 其它 ” 有多少个MOV AH,4CH INT 21HDISPPROC NEAR;显示子程序JB DIG ;ASCII 码大于等于30H 小于 3AH 则归类为 “ 数字 ” CMP BL,41H JB OTH ; ASCII 码大于等于3AH 小于 41H 则归类为 “ 其它 ” CMP BL,5BH JB LET ;ASCII 码大于等于41H 小于 5BH 则归类为 “ 字母 ”
25、CMP BL,61H JB OTH ; ASCII 码大于等于5BH 小于 61H 则归类为 “ 其它 ” CMP BL,7BH JB LET ;ASCII 码大于等于61H 小于 7BH 则归类为 “ 字母 ”OTH:INC AL;“ 其它 ” 计数器加 1DIG:JMP ENDLP INC AH;“ 数字 ” 计数器加1LET:JMP ENDLP INC BH;“ 字母 ” 计数器加1ENDLP: INC SI LOOP AGAIN ;继续循环MOV DIGIT, AH ;统计各类个数精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机硬件技术基础 2022年计算机硬件技术基础实验答案程序 2022 计算机硬件 技术 基础 实验 答案 程序
限制150内