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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一:简单程序设计实验

(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、B、C,比较结果K

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 ;对A、B进行比较,不相等则转到

COMP2

JNE COMP2 ;相等则比较A、

C

CMP

AL,C

JNE K1 ;A、C不相等则

K=1

JMP K2 ;A、C相等则

K=2

COMP2: MOV

BL,B CMP

BL,C

JE K1 ;对B、C进行比较,相等则

K=1

CMP AL,C JE K1 ;对A 、C 进行比较,相等则

K=1

K0:

MOV K,0 JMP

EXIT K1:

MOV K,1 JMP

EXIT K2: MOV K,2 EXIT: MOV AH,4CH INT 21H CODE

ENDS END START

(2)编写一个能实现下列表达式的程序:(设A ,B ,C 为小于128的正整数)。

A B

A B N A B C A B +≤⎧=⎨

-+>⎩ 程序流程图略。参考源程序:

DATA SEGMEN

T

A D

B 22H ;定义 A 、B 、

C 、

N B DB 10H C DB 01H N DB ?

DATA ENDS CODE

SEGMENT ASSUME CS:CODE,

DS:DA TA 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 AD

C AL,

C

EXIT: MOV N, AL

MOV

AH,4CH INT

21H

CODE ENDS

END START

实验三循环程序设计实验

(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, DATA

MOV ES, AX

LEA SI,

STRN LEA

DI, BUF

MOV CX,

COUNT MOV AL,

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,

相关文档
最新文档