计算机硬件技术基础实验答案程序.docx
文本预览下载声明
实验一:简单程序设计实验
(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 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
MOV SI,OFFSET ARY ;取 ARY 的偏移地址
MOV AL,[SI] ;取 16进制数至 AL
MOV BL,AL
AND AL,0F0H ;取 16进制数的高四位,即 X1
SHR AL,4
MOV [SI+1],AL ;存 0X1
MOV AL,BL
AND AL,0FH ;取 16进制数的低四位,即 X2
MOV [SI+2],AL ;存 0X2
MOV AH,4CH
INT 21H
CODE
ENDS
END START
实验二:分支程序设计实验
1)编写一个字符比较程序,比较 3 个无符号字节数 A,B,C 的大小,并根据比较结果
对变量 K 赋值:
如果 3 个数不相等,则 K=0 ;
如果 3 个数中有两个相等,则 K=1 ;
如果 3 个数都相等,则 K=2 。
程序流程图略。
参考源程序:
DATA SEGMENT
A DB 20H
B DB 20H
C DB 20H
K DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,A
CMP AL,B
JNE COMP2
CMP AL,C
JNE K1
JMP K2
COMP2: MOV BL,B
CMP BL,C
JE K1
CMP AL,C
JE K1
K0: MOV K,0
JMP EXIT
K1: MOV K,1
JMP EXIT
K2: MOV K,2
;定义待比较数 A、B、C,比较结果K
;对A、B进行比较,不相等则转到 C0MP2 ;相等则比较 A 、 C
;A、C不相等则K=1 ; A 、 C 相等则 K=2
;对B、C进行比较,相等则 K=1
;对A、C进行比较,相等则 K=1
EXIT:
MOV AH,4CH
INT 21H
CODE
ENDS
END START
(2)编写一个能实现下列表达式的程序:
? A + B A WB
N = ? 设 A,B,C 为小于 128 的正整数。
?A - B +C A B
程序流程图略。
参考源程序:
DATA SEGMENT
A DB 22H ;定义 A 、B、 C、N
B DB 10H
C DB 01H
N DB ?
DATA 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
;任意定义一个字串,以 “$
;任意定义一个字串,以 “$”结尾
;逐个取字符进行判断
;自己和自己做与运算
;根据 PF 标志位的变化进行跳转
实验三 循环程序设计实验
(1)将字符串 STRN (以 “ $结”尾)中的每一个字符均加上偶校验位,并统计有多少个字符 因含有奇数个“ 1而加上了校验位。统计结果存于 N单元中。
程序流程图略。
参考源程序:
DATA SEGMENT STR
显示全部