文档库 最新最全的文档下载
当前位置:文档库 › 微机原理与接口技术(4-8)例题与习题解答

微机原理与接口技术(4-8)例题与习题解答

微机原理与接口技术(4-8)例题与习题解答
微机原理与接口技术(4-8)例题与习题解答

1.例题详解

例4.1 写出下面数据段中每个符号或变量所对应的值。

DATA SEGMENT

ORG 1000H

MAX EQU OFFH

ONE EQU MAX MOD 10

TWO EQU ONE x 4

SIZE EQU((TWO LT 20H)AND 10H)+10H

BUF DB SIZE x 2 DUP(?)

COUNT EQU$ - BUF

DATA ENDS

解: MAX=0FFH

ONE=05H(ONE为地议的值除以10的余数)

TWO=14H

SIZE=20H

BUF=1000H(BUF为数据段的偏移量地址)

COUNT=40H

讨论: 伪指令EQU前面的符号一定对应一个确定的值,该符号不占用也不对应内存空间。而数据定义语句DB、DW等要分配内存空间,其前面的符号名一定要对应确切的内存偏移量。符号名SIZE后面是一个表达式,其值要根据表达式的计算来求出,TWO的值<20H,则结果为真,表示为0FFH,再和10H进行“与"运算,结果为10H,加10H,最后的值为20H。若TWO的值>20H,则结果为假,表示为O,再和10H相“与"结果为O,加1OH,最后结果为10H。

例4.2 若有如下定义的数据段:

DATA SEGMENG

BUFl DB‘ABCDl’,ODH,OAH,‘$’

BUF2 DW 5 DUP(?)

BUF3 DD 4 DUP(?)

BUF4 DQ 1234567890ABCDEFH

BUF5 DT 2 DUP(?)

BUF6 DB 3 DUP‘ERROR MSG!’,‘S’

DATA ENDS

如果DATA为1600H,要求写出BUFl~BUF6的段值、段内偏移量,类型值TYPE,LENGH及SIZE属性值。

解: 由于BUFl~BUF6都在同一个DATA段内,所以它们的段属性返回值是相同的,即

SEG BUFl~SEG BUF6都等于1600H。

段内偏移量属性值如下:

OFFSET BUFl=0000H,OFFSET BUF2=0008H

OFFSET BUF3=0012H.OFFSET BUF4=0022H

OFFSET BUF5=002AH,OFFSET BUF6=003EH

类型值如下:

TYPE BUFl=1,TYPE BUF2=2

TYPE BUF3=4,TYPE BUF4=8

TYPE BUF5=10,TYPE BUF6=l

LENGTH BUFl=l,LENGTH BUF2=5

LENGTH BUF3=4,LENGTH BUF4=l

LENGTH BUF5=2,LENGTH BUF6=3

SIZE BUFl=1,SIZE BUF2=10

SIZE BUF3=16,SIZE BUF4=8

SIZE BUF5=20, SIZE BUF6=3

讨论: 本题要注意数据定义语句DB、DW、DD、DQ、DT等的区别,它们对应的变量对内存单元的分配是不一样的。它们对应的存储单元数(字节单元)分别为1、2、4、8和10个。LENGTH与SIZE是有区别的,当使用DUP时,LENGTH 返回分配给该变量的单元数;否则返回值为1。而SIZE的值为TYPE×LENGTH。

例4.3 编一程序,实现多字节组合型BCD码相加。若实现相减,程序应如何修改?若实现多字节二进制数加(减)法又如何修改?

解:

DATA SEGMENT

NUMl DB 12H,34H,56H,78H,90H ;若X=1234567890H

COUNT EQU $-NUMl ;定义该数的长度

NUM2 DB 98H,87H,76H,65H,54H ;设Y=9887766554H

SUM DB COUNT DUP(0) ;定义BCD和的存储单元

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA

START:MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV SI, OFFSET NUMl+COUNT-1 ;SI指向第一个数的低位

MOV BX, OFFSET NUM2+COUNT-1 ;BX指向第二个数的低位

MOV DI, OFFSET SUM+COUNT-1 ;DI指向和数SUM的低位

MOV CX, COUNT ;CX为计数器

CLC ;CF=0

STD ;DF=1,地址修改按减量NEXT:LODSB ;取BCD数据放入AL中ADC AL,[BX] ;两数相加,要考虑CF

DAA ;BVD码加后调整

STOSB ;存和

DEC BX ;修改NUM2地址指针

LOOP NEXT ;CX-1,未完继续

MOV AH,4CH ;返回系统

INT 21H

CODE ENDS

END START

例4.7 编一程序,统计一个以‘$’结尾的字符串的长度,并要求滤去第一个非空格字符之前的所有空格。

DATA SEGMENT

STRG DB‘THE LENGTH…$’;定义字符串

LENG DW? ;存放字符串长度的内存地址

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX ;给数据段赋初值.

MOV SI,OFFSET STRG

XOR BX,BX ;BX清O,存放统计的长度LOP: MOV AL,[SI] ;取字符串中的字符到AL中

INC SI ;修改地址,指向下一个字符

CMP AL,32 ;AL=‘’?,32是空格的ASCII 码

JZ LOP ;若是空格,取下一字符NEXT: CMP AL,‘$’;若不是空格,是结束符吗

JZ OK ;若是‘S’,则结束统计’

INC BX ;若不是结束符,长度加1

MOV AL,[SI] ;取下一个字符

INC SI ;修改地址指针

JMP NEXT ;继续上述操作

OK: MOV IENG,BX ;若是结束符,存放长度于内存单元

MOV AH,4CH

INT 21H

CODE ENDS

END START

讨论: 在编程时,若循环次数是已知时,通常是将循环次数送人CX,,然后用LOOP指令就可以控制循环。但若循环次数是未知时,循环次数将根据给定的某种条件来判定。本题的循环次数是未知的,给定的条件有两个,第一是要找到第一个非空格字符,第二是从第一个非空格字符开始统计字符串的长度。所以程序包括两个循环,第一个循环的结束条件是找到非空格字符,第二个循环的结束条件是找到字符‘$’。

例4.8已知多位数x(如8个字节)的补码,编一程序求一x的补码。

解根据补码的定义,可采用O减去该多位数实现。

DATA SEGMENT

NUM DQ 1234567890ABCDEFH

CONT DW 4

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV CX,CONT

MOV SI,OFFSET NUM

CLC

NEXT:XOR AX,AX

SBB AX,[SI]

MOV[SI],AX

ADD SI,2

LOOP NEXT

MOV AH,4CH

INT 2lH

CODE ENDS

END START

2.习题自测

4.1 试编一程序,把地址偏移量为100H单元开始的256个单元分别写入00H,01 H,02H,03H,…,FFH数据。

4.1解:源程序如下

DATA SEGMENT

ORG 100H

BUFl DB 256 DUP(?)

COUNT EQU$-BUFl

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET BUFl

MOV CX,COUNT

XOR AL,AL

NEXT:MOV[SI],AL

INC AL

INC SI

LOOP NEXT

MOV AH,4CH

INT 21H

CODE ENDS

END START

4.2 统计上题写入的数据块中0元素、正元素、负元素的个数,并分别把统计结果送人上述数据块之后的三个单元中。

4.2解:

DATA SEGMENT

ORG 100H

BUFl DB 00H,01H,02H,……,FEH,FFH;共256个数据

COUNT EQU$-BUFl

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET BUFl

MOC CX,COUNT

XOR BX,BX ;BL与BH分别存放正、负元素的个数

XOR DH,DH ;DH寄存器存放O元素个数

NEXT2: MOV AL,[SI]

CMP AL,0

JZ ZERO ;若ZF=1,则为O,转至ZERO,DH+1

JS NEGAT ;若SF=0 则为负数,BH+1

JMP PLUS ;既不是O又不是负,则为正数,BL+1 ZERO: INC DH ;O的个数加1

JMP NEXT3

NEGAT: INC BH ;负数个数加1

JMP NEXT3

PLUS:INC BL ;正数个数加1

NEXT3:INC SI ;修改地址指针SI

LOOP NEXT2 ;未完,继续循环

MOV[SI],DH ;存人O元素个数统计结果

INC SI

MOV[SI],BX ;存人正、负数个数统计结果

MOV AH,4CH

INT 21H

CODE ENDS

END START

4.3用DOS功能调用显示上面两题中数据块各单元(包括统计结果)内容。为了显示清晰明了,要求每行显示16个数据,两个数据之间用空格分开。

4.3解:把上述三题4.1,4.2,4.3结合起来综合编程如下:

DATA SEGMENT

ORG 100H ;数据块在段中的偏移地址为100H BUFl DB 259 DUP(?) ;256个单元存放数据,3个单元存放结果COUNT EQU$-BUFl ;数据块长度为COUNT

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET BUFl

MOV CX,COUNT-3 ;数据块为256个单元(259-3)

XOR AL,AL ;AL清O

NEXT1:MOV[SI],AL ;存人数据00H,01H,…,FFH INC AL

INC SI

LOOP NEXT1

MOV SI,OFFSET BUFl

MOV CX COUNT-3

XOR BX,BX ;BL与BH分别存放正、负元素的个数

XOR DH,DH ;DH寄存器存放O元素个数

NEXT2:MOV AL,[SI]

CMP AL,O

JZ ZERO ;ZF=1,则为O,转至ZERO,DH+1 JS NEGAT ;看SF=0,则为负数,BH+l

JMP PLUS ;既不是0又不是负,则为正数,BL+1 ZERO: INC DH ;O的个数加1

JMP NEXT3

NEGAT: INC BH ;负数个数加1

JMP NEXT3

PLUS: INC BL ;正数个数加1

NEXT3: INC SI ;修改地址指针SI

LOOP NEXT2 ;未完,继续循环

MOV[SI],DH ;存放O的个数的统计结果

INC SI

MOV[SI],BX ;存放正、负数个数的统计结果

MOV SI,OFFSET BUFl ;以下为在屏幕上显示数据和统计结果

MOV CX,COUNT

ZRBH: MOV BH,16 ;每行显示16个数据

NEXT4: MOV AL,[SI]

MOV BL,AL ;暂存取出的数据在BL中

SHR AL,1 ;把数据右移4位,先处理高4位

SHR AL,1

SHR AL,1

SHR AL, 1

CMP AL,0AH ;判断高4位是字母还是数字

JC JIA30 ;若是数字O~9,加30H变为对应的ASCII码

ADD AL,7 ;若是字母A~F,需加37H变为对应的ASCII码JIA30: ADD AL,30H

CALL DISP ;调用显示字符程序,显示高4位

MOV AL,BL ;恢复原始数据,处理低4位

AND AL,0FH ;屏蔽高4位

CMP AL,0AH

JC JIA30A

ADD AL,7

JIA30A: ADD AL,30H

CALL DISP ;显示低4位

MOV AL,20H ;两数据之问加一空格

CALL DISP

INC SI ;修改地址指针

LOOP NEXT5 ;未处理完,继续循环

JMP STOP

NEXT5: DEC BH

JNZ NEXT4

MOV AL,OAH ;每行够16个数据,送回车、换行0AH、0DH

CALL DISP

MOV AL,ODH

CALL DISP

JMP ZRBH ;继续处理下一行

STOP:MOV AH,4CH

INT 21H

DISP PROC NEAR ;显示字符子程序

MOV DL,AL ;在调用之前先把要显示的字符送人AL

MOV AH,2

INT 21 H

RET

DISP ENDP

CODE ENDS

END START

4.4把地址偏移量为STRGl单元开始的128个单元的内容传送到地址偏移量为STRG2开始的单元中。

4.4解:

DATA SEGMENT

STRGl DB XXH,XXH,XXH,…,XXH;~128个数据

COUNT EQU$-STRGl

STRG2 DB 128 DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX, DATA

MOV DS,AX

MOV SI,OFFSET STRG1

MOV DI,OFFSET STRG2

MOV CX,COUNT

CLD

REP MOVSB

MOV AH,4CH

INT 21H

CODE ENDS

END START

4.5寄存器SI作地址指针,自SI所指的内存单元开始连续存放三个无符号数(以字为单位),编一程序求它们的和,并将结果存放在这三个数之后的单元中。

4.5解:

DATA SEGMENT

BUF DW XXH,YYH,ZZH

SUM DW?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET BUF

MOV DI,OFFSET SUM

MOV AX,[SI]

ADD AX,[SI+2]

ADC AX,[SI+4]

MOV[DI],AX

MOV AH,4CH

INT 21 H

CODE ENDS

END START

4.6读下面程序段,问:在什么情况下本段程序的执行结果是AH=0?

START: IN AL, 5FH

MOV AH, 0

JZ BRCH

MOV AH, 0

JMP STOP

BRCH: MOV AH 0FFH

STOP: INT 20H

解: 当标志寄存器的z表示为1时,执行结果AH=0。

4.7下面语句在存储器中分别为变量分配多少字节?

ONE DW 10

TWO DW 4 DUP(?),5

THREE DB 2 DUP(?,8 DUP(0))

COUNT EQU 10

FOUR DD COUNT DUP(?)

FIVE DB…HOW ARE YOU??

4.7解

ONE DW 10 ;为ONE分配2个字节

TWO DW 4 DUP(?),5 ;为TWO分配lO个字节

THREE DB 2 DUP(?,8 DUP(0)) ;为THREE分配18个字节

COUNT EQU 10 ;不给COUNT分配存储单元

FOUR DD COUNT DUP(?) ;为FOUR分配40个字节

FIVE DB‘HOW ARE YOU?’;为FIVE分配12个字节

4.8数据定义语句如下所示:

FIRST DB 90H,5FH,6EH,69H

SECOND DB 5 DUP(?)

THIRD DB 5 DUP(?)

FORTH DB DUP(?)

自FIRST单元开始存放的是一个四字节的16进制数(低位字节在前),要求:

(1)编一段程序将这个数左移两位后存放到自SECOND开始的的单元(注意保留移出部分);

(2)编一段程序将这个数右移两位后存放到自THIRD开始的的单元(注意保留移出部分);

(3)编一段程序将这个数求补后存放到自FORTH开始的单元。

4.8解:

DATA SEGMENT

FIRST DB 90H,5FH,6EH,69H

SECOND DB 5 DUP(?)

THIRD DB 5 DUP(?)

FORTH DB DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

CALL SUBPl

CALL SUBP2

CALL SUBP3

MOV AH,4CH

INT 21 H

SUBP1 PROC

MOV SI,OFFSET FIRST

MOV DI,OFFSET SECOND

XOR BL,BL

MOV CL,2

MOV,AX,[SI]

MOV DX,[SI+2]

LOP1:SHL AX,1

RCL DX, 1

RCL BL, 1

DEC CL

JNZ LOPl

MOV[DI],AX

MOV[DI+2],DX

MOV[DI+4],BL

RET

SUBPl ENDP

SUBP2 PROC

MOV SI,OFFSET FIRST

MOV DI,OFFSET THIRD

XOR BL,BL

MOV CL,2

MOV AX,[SI]

MOV DX,[SI+2]

LOP2:SHR DX,1

RCR AX,1

RCR BL,1

DEC CL

JNZ LOP2

MOV[DI],BL

MOV[DI+1],AX

MOV[DI+3],DX

RET

SUBP2 ENDP

SUBP3 PROC

MOV sI,OFFSET FIRST

MOV DI, OFFSET FORTH

MOV AX,[SI]

MOV DX,[SI+2]

NEG AX

NEG DX

SBB DX,0

MOV[DI],AX

MOV[DI+2],DX

RET

SUBP3 ENDP

CODE ENDS

END START

4.9 指令语句AND AX ,OPD1 AND OPD2中,OPD1和OPD2是两个已赋值的变量,问两个AND操作分别在什么时间进行?有什么区别?

解: 前面的AND是指令,在程序运行时执行,后面的AND是运算符,在汇编的时候由汇编程序计算,表达式计算结果出现在执行程序中。二者的区别在于,前者是指令,程序运行时执行,后者时运算符,汇编时计算。

4.10如下指令或程序是否有错,若有错,请指出错在哪里?

(1) K1 EQU 1024

.

.

.

MOV K1,AX

(2) MOV DS,100

MOV[1000],[2000]

(3) IMP DB?

.

.

.

MOV IMP,AX

(4) A1 DB?

A2 DB 10

.

.

.

CMP A1,A2

(5)将1000送人x1单元,用如下程序:

X1 DB?

.

.

.

MOV BX,X1

MOV[BX],1000,

4.10解:

(1)MOV K1,AX错。因为K1为立即数,它不能作为目的操作数。

(2)这两条指令都是错的。第一条立即数不能直接送给段寄存

器;第二条两个操作数不能同时为内存操作数。

(3)MOV IMP,AX错。两操作数类型不匹配,IMP是一字节内存单

元,而AX寄存器中为16位数据。

(4)CMP A1,A2错。两个操作数A1与A2不能同时为内存操作

数。

(5)MOV[BX],1000错。两操作数类型不匹配,[BX]只定义了一

字节单元,而1000是16位数据。

4.11 8086汇编语言程序中段的类型有几种,各段如何定义?段定义语句中,定位类型、组合类型、类别各起什么作用,各有什么含义?

4.11 解

8086汇编语言中,段的类型有三种。即代码段、堆栈段、数据段(附加数据段可归属于数据段)。各段可用段定义语句(SEGMENT与ENDS)和段名赋给段寄存器语句(ASSUME)来定义。段定义语句中,定位类型表示此段的起始边界要求,可允许4种段的起始边界,即PAGE、PARA、WORD或BYTE。它们分别表示段的起始值为以页、节、字、字节为边界,若此项省略,则默认值为PARA。组合类型用来告诉连接程序本段与其他段的关系,分别为

NONE、PUBLIC、COMMON、AT表达式、STACK或MEMORY。每一种的含义请参看有关书籍。

类别是连接程序(LINK)需要的。它可以是任何合法的名称,必须用单引号括起来,连接程序只使同类别的段发生关联。典型类别如‘CODE’,‘STACK’。

4.12使用DOS功能调用0AH从键盘输入40个字符的字符串并将其送人一输入缓冲区。、在按下Enter键后,显示这些字符。

4.12解:

NAME KBDINPUT

CODE SEGMENT

ASSUME CS:CODE,DS:CODE

ORG 100H

START:JMP BEGIN

BUF DB 41

NUMB DB?

CHARS DB 40 DUP(?)

MSGl DB‘Type anything,followed by enter.’,0DH,0AH,‘$’

MSG2 DB 0DH,0AH,‘Contents of the KBD input buf:’,0DH,0AH,‘$’

BEGIN:MOV AX,CS

MOV DS,AX

MOV DX,OFFSET MSGl

MOV AH,9

INT 21H

MOV DX,OFFSET BUF

MOV AH,OAH

INT 21 H

MOV DX,OFFSET MSG2

MOV AH,9

INT 21 H

XOR BX,BX

MOV BL,NUMB

MOV CHARS[BX],‘$’

MOV DX,OFFSET CHARS

MOV AH,9

INT 21 H

MOV AH,4CH

INT 21 H

CODE ENDS

END START

说明: 本题把数据区放在代码段中,没有单独定义数据段,并且用ORG 100H 语句把程序起始地址的偏移量放在IOOH开始的单元,用JMP BEGIN指令跳过数据区,这样可以把该程序经汇编、连接后的执行程序(·EXE)用EXE2BIN软件生成·COM文件。

4.13某软件共可接收10个键盘命令,(分别为A,B,C,…,J),完成这

10个命令的程序分别为过程P0,P1,…,P9。编一程序从键盘接收命令,并转到相应的过程去执行。要求用两种方法:

(1)用比较、转移指令实现。

(2)用跳转表实现。

4.13解:

(1)用比较、转移指令实现

CODE SEGMENT

ASSUME CS:CODE

ORG 100H

START:JMP BEGIN

MSG DB‘Error character!’,0DH,0AH,‘$’

BEGIN:MOV AH,1

INT 21 H

MOV AL,'A'

JZ PSO

MOV AL,…B?

JZ PSl

MOV AL,…C?

JZ PS2

MOV AL,…D?

JZ PS3

MOV AL,…E?

JZ PS4

MOV AL,…F?

JZ PS5

MOV AL,…G?

JZ PS6

MOV AL,…H?

JZ PS7

MOV AL,…I?

Jz PS8

MoV AL,‘J’

JZ PS9

MOV DX,OFFSET MSG

MOV AH,9

INT 21 H

JMP BEGIN

CALL P0

PS0: CALL P0

JMP BEGIN

PS1: CALL P1

JMP BEGIN

PS2: CALL P2

JMP BEGIN

.

.

PS9:CALL P9

JMP BEGIN

MOV AH,4CH

INT 21 H

PO PROC

RET

P0 ENDP

P1 PROC

RET

P1 ENDP

P9 PROC

RET

P9 ENDP

CODE ENDS

END START

(2)用跳转表实现

DATA SEGMEN

PTAB DW 0100H ;First program entrance DW 0200H

DW 0300H

DW 0400H

DW 0500H

DW 0600H

DW 0700H

DW 0800H

DW 0900H ;Nineteenth program entrance DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

MOV AX,DATA

MOV DS,AX

MOV BX,OFFSET PTAB

MOV AH,1

IT 21H

XOR AH,AH

SUB AL,41H

JZ LOP

DEC AL

LOP:SHL AX,1

ADD BX,AX

JMP WORD PTR [BX]

讨论:实现该题的功能用两种方法都可以,显然,用跳转表实现要简单快捷得多。所以遇到多分支程序结构时采用跳转表比用条件转移指令更方便。

4.14 内存自BUFF单元的缓冲区连续放着512个学生的英文分数,编程序统计其中90--100,60-89,60分以下者各有多少人,并把结果连续存放到RESULT 开始的单元中.

4.14解:

DATA SEGMENT

BUFl DB 86,92,65,78,45,88,55,l00,…,76

;共有512个字节数据,数据范围为,O一100

COUNT EQU $-BUFl

RESULT DW 3 DUP(?)

DATA ENDS

STACK SEGMENT STACK 'STACK'

STAPN DB 100H DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

START:MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET BUFl

MOV DI,OFFSET RESULT

MOV CX,COUNT

CLD

XOR BX,BX;BX存放90~100分的学生个数

XOR DX,DX;DX存放60~89分的学生个数

XOR BP,BP ;BP存放oo~59分的学生个数

NEXT:LODSB ;取学生分数

CMP Al,90 ;是否大于等于90分?

JNC NEXTl ;大于等于90分,转到BX+l

CMP AL,60 ;是否大于等于60分?

JNC NEXT2 ;大于等于60分,转到DX+1

INC BP ;小于60分,BP+1

JMP DONE

NEXTl:INC BX ;90—100分个数加1

JMP DONE

NEXT2:INC DX ;60~89分的个数加l

DONE:LOOP NEXT

MOV[DI],BX

ADD DI,2

MOV[DI],DX

ADD DI,2

MOV[DI],BP

MOV AH,4CH

INT 21H

CODE ENDS

END START

4.15设有一数据块,共有100个字节,试找出数据块中最大者,并把它送至MAX单元中。

4.15解:

CODE SEGMENT

ASSUME CS:CODE,DS:CODE

ORG 100H

START:JMP BEGIN

BUF DB 12H,56H,OABH,…,OFDH,OOH;共100个字节无符号数

COUNT EQU $-BUF

MAX DB?

BEGIN: MOV AX,CS

MOV DS,AX

MOV SI,OFFSET BUF

MOV CX,COUNT

MOV AL,[SI]

LOPl:INC SI

CMP AL,[SI]

JG LOP2

XCHG AL,[SI]

LOP2:LOOP LOPl

MOV MAX,AL

MOV AH,4CH

INT 21H

CODE ENDS

END START

4.16有两个双字长的无符号数,分别存放在BUFFl和BUFF2开始的数据区中。试编一程序,要求:

(1)对两数相加;

(2)对两数相减;

(3)对两数相乘。

并分别将结果存放在BUFF3开始的数据区中。用多模块分别编写,然后汇编连接成一个文件。

4.16解:用四个模块MODA、MODB、MODC、MODD分别编写,主模块为MODA。MODB、MODC、MODD为从模块。这四个模块分别存为四个文件,用MASM分别汇编为四个OBJ文件MODA.OBJ,MODB.OBJ,MODC.OBJ,MODD.OBJ,然后用LINK把这四个.OBJ连接成一个可执行文件。MODA.ASM 主模块:

NAME MODA ;主模块

DATA SEGMENT

PUBLIC BUFF1,BUFF2,BUFF3

BUFF1 DD OABCD7788H

BUFF2 DD OFEDC9966H

BUFF3 DD 4 DUP(?) ;和与差各需1个双字,乘积需2个双字空间DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

EXTRN MODB:PROC,MODC:PROC,MODD:PROC START:MOV AX,DATA

MOV DS,AX

CALL MODB

CALL MODC

CALL MODD

MOV AH,4CH

INT 21H

CODE ENDS

END START ;只有主模块有启动地址

MODB.ASM模块如下:

NAME MODB

EXTRN BUFF1:DWORD,BUFF2:DWORD,BUFF3:DWORD CODE SEGMENT

ASSUME CS:CODE

PUBLIC MODB

MODB PROC

MOV SI,OFFSET BUFF1

MOV DI,OFFSET BUFF2

MOV BX,OFFSET BUFF3

CLC

PUSHF ;保存标志寄存器内容

MOV DL,2

NEXT:POPF ;恢复标志寄存器内容

MOV AX,[SI]

MOV CX,[DI]

ADC AX,CX

PUSHF ;主要为保存CF标志

MOV[BX],AX

ADD SI,2

ADD DI,2

ADD BX,2

DEC DL

JNZ NEXT

POPF ;为了栈平衡,返回子程序时地址不会出错

RET

MODB ENDP

CODE ENDS

END ;从模块没有启动地址

MODC.ASM模块如下:

NAME MODC

EXTRN BUFFl:DWORD,BUFF2:DWORD,BUFF3:DWORD CODE SEGMENT

ASSUME CS:CODE

PUBLIC MODC

MODC PROC

MOV SI,OFFSET BUFF1

MOV DI, OFFSET BUFF2

MOV BX,OFFSET BUFF3+4

CLC

PUSHF

MOV DL,2

NEXT:POPF

MOV AX,[SI]

MOV CX,[DI]

SBB AX,CX

PUSHF

MOV [BX],AX

ADD SI,2

ADD DI,2

ADD BX,2

DEC DL

JNZ NEXT

POPF

RET

MODC ENDP

CODE ENDS

END ;从模块没有启动地址

MODD.ASM模块如下:

NAME MODD

EXTRN BUFF1:DWORD,BUFF2:DWORD,BUFF3:DWORD CODE SEGMENT

ASSUME CS:CODE

PUBLIC MODD

MODB PROC

MOV SI, OFFSET BUFF1

MOV DI,OFFSET BUFF2

MOV BX,OFFSET BUFF3+8

MOV CL,2

NEXT:MOV AX,[SI]

MUL WORD PTR [DI]

MOV[BX],AX

ADD BX,2

MOV[BX],DX

ADD SI,2

ADD DI,2

ADD BX,2

DEC CL

JNZ NEXT

RET

MODD ENDP

CODE ENDS

END ;从模块没有启动地址

4.17已知下图各寄存器和内存单元的状态,阅读下列程序段,将中间结果填人右边的空格,最后结果填人后面的图中。

8086 CPU

CS 3000 CX FFFF

DS 2050 BX 0004

SS 50A0 SP 0000

ES 0FFF DX 17C6

IP 0000 AX 8E9D

DI 000A BP 1403

SI 0008 CF 1

地址RAM

20506 06

20507 00

20508 87

20509 1A

2050A 3E

2050B C5

2050C 2F

MOV DX,[BX+2] DX=____H,BX=____H

PUSH CX SP=____H,[SP]=___H

MOV CX,BX CX=____H,BX=____H

TEST AX,DX AX=____H,CF=____B

MOV AL,[SI] AL=____H

ADC AL,[DI] AL=____H,CF=____B

DAA AL=____H

INC SI SI=____H

INC DI DI=____H

MOV[DI],AL [DI]=___H

XCHG AX,DX AX=___H,DX=___H POP AX AX=___H,SP=____H XOR AH,BL AH=____H,BL=____H JMP DX IP=____H

8086 CPU

CS CX

DS BX

SS SP

ES DX

IP AX

DI BP

SI CF

地址RAM

20506

20507

20508

20509

2050A

2050B

2050C

4.17解:

8086 CPU

CS 3000 CX FFFF

DS 2050 BX 0004

SS 50A0 SP 0000

ES 0FFF DX 17C6

IP 0000 AX 8E9D

DI 000A BP 1403

SI 0008 CF 1

地址RAM

20506 06

20507 00

20508 87

20509 1A

2050A 3E

2050B C5

2050C 2F

MOV DX,[BX+2] DX=0006 H,BX=0004 H PUSH CX SP=FFFE H,[SP]=FF H MOV CX,BX CX=0004 H,BX=0004 H

微机原理与接口技术(第三版)课本习题答案

第二章 8086体系结构与80x86CPU 1.8086CPU由哪两部分构成它们的主要功能是什么 答:8086CPU由两部分组成:指令执行部件(EU,Execution Unit)和总线接口部件(BIU,Bus Interface Unit)。指令执行部件(EU)主要由算术逻辑运算单元(ALU)、标志寄存器FR、通用寄存器组和EU控制器等4个部件组成,其主要功能是执行指令。总线接口部件(BIU)主要由地址加法器、专用寄存器组、指令队列和总线控制电路等4个部件组成,其主要功能是形成访问存储器的物理地址、访问存储器并取指令暂存到指令队列中等待执行,访问存储器或I/O端口读取操作数参加EU运算或存放运算结果等。 2.8086CPU预取指令队列有什么好处8086CPU内部的并行操作体现在哪里答:8086CPU的预取指令队列由6个字节组成,按照8086CPU的设计要求,指令执行部件(EU)在执行指令时,不是直接通过访问存储器取指令,而是从指令队列中取得指令代码,并分析执行它。从速度上看,该指令队列是在CPU内部,EU从指令队列中获得指令的速度会远远超过直接从内存中读取指令。8086CPU 内部的并行操作体现在指令执行的同时,待执行的指令也同时从内存中读取,并送到指令队列。 5.简述8086系统中物理地址的形成过程。8086系统中的物理地址最多有多少个逻辑地址呢答:8086系统中的物理地址是由20根地址总线形成的。8086系统采用分段并附以地址偏移量办法形成20位的物理地址。采用分段结构的存储器中,任何一个逻辑地址都由段基址和偏移地址两部分构成,都是16位二进制数。通过一个20位的地址加法器将这两个地址相加形成物理地址。具体做法是16位的段基址左移4位(相当于在段基址最低位后添4个“0”),然后与偏移地址相加获得物理地址。由于8086CPU的地址线是20根,所以可寻址的存储空间为1M字节,即8086系统的物理地址空间是1MB。逻辑地址由段基址和偏移地址两部分构成,都是无符号的16位二进制数,程序设计时采用逻辑地址,也是1MB。 6.8086系统中的存储器为什么要采用分段结构有什么好处 答:8086CPU中的寄存器都是16位的,16位的地址只能访问64KB的内存。086系统中的物理地址是由20根地址总线形成的,要做到对20位地址空间进行访问,就需要两部分地址

微机原理与接口习题1_

第1章习题 1、诺依曼计算机的涵是什么?这种计算机的程序运行是由指令流驱动的还是数据流驱动的? 2、微型计算机系统有哪三个层次?试简述它们的涵及其联系和区别。 3、为什么把微型计算机的基本结构说成是总线结构?试简述总线结构的优点。 4、微型计算机硬件系统由哪些部分组成?各组成部分的功能是什么? 5、计算机分那几类?各有什么特点? 6、微处理器应包含的最基本功能部件是哪些? 7、微计算机应包含的最基本功能部件是哪些? 8、微型计算机系统有哪几部分组成,简述各部分功能特点? 9、一个完整的计算机系统通常包括系统软件和应用软件、硬件系统和软件系统、计算机及其外部设备、系统硬件和系统软件这四种组合中的哪一种? 第1章习题解答 1、诺依曼计算机的涵是什么?这种计算机程序运行是由指令流驱动的还是数据流驱动的? 答:诺依曼计算机的涵: 由运算器、控制器、存储器、输入设备、输出设备5大部分组成计算机硬件。 数据和计算机指令采用二进制数形式表示,存储在计算机部存储器中。 计算机工作原理的核心是“存储程序”和“程序控制”。事先编制好的由计算机指令组成的程序在执行前先装入存储器,控制器依据程序中的指令顺序而复始地取出指令、分析指令、执行指令,根据指令的功能进行相应的运算,直到完成全部指令操作为止. 程序的运行是通过指令流来驱动的。 2、微型计算机系统有哪三个层次?试简述它们的涵及其联系和区别。 答:微型计算机系统的三个层次:微处理器、微型计算机和微型计算机系统。 三者的涵: 微处理器是利用大规模集成电路技术,将组成计算机的核心部件——运算器和控制器集成在一块硅片上的集成电路,简称MPU,习惯上称CPU。 微型计算机则是以微处理器为核心,配以存储器、输入/输出(I/O)接口电路,通过总线结构连接而构成的裸机。 微型计算机系统是由微型计算机配以相应的外围设备(如键盘、显示器、打印机、外存储器等)、电源和其他辅助设备(如面板、机架等),以及控制微型计算机工作的软件而构成的完整的计算系统。 它们三者之间是从局部到全局的关系。单纯的微处理器和单纯的微型计算机都不能独立工作。只有微型计算机系统才是完整的计算系统,才可正常工作。 3、为什么把微型计算机的基本结构说成是总线结构?试简述总线结构的优点。 答:在微型计算机中,各组成部分之间是通过总线(包括地址总线、数据总线、控制总线)连接在一起而构成一个整体的,它们之间的信息交换也是通过总线进行。CPU通过总线与存储器和I/O接口电路连接,I/O接口和外设也是通过总线连接,即使在CPU部,它的各功能部件也是通过总线相连的。因此微型计算机的基本结构就是总线结构。 微型计算机采用总线结构后,系统中各功能部件之间的相互关系变为各部件面向总线的单一关系。一个部件只要满足总线标准,就可直接连接到采用这种总线标准的系统中。这使得系统的设计与构造非常便,同时也便于系统的扩充、升级和维修。 4、微型计算机硬件系统由哪些部分组成?各组成部分的功能是什么? 答:微型计算机硬件系统主要由CPU、存储器、I/O接口电路、输入/输出设备、总线,以及电源和一些辅助设备构成。 CPU:微机系统的核心部件,是运算和指挥控制中心。 存储器:包括存和外存,是微机系统的存储和记忆部件,用以存放数据和程序。 I/O接口电路:CPU与输入/输出设备的连接与信息交换不能直接进行,I/O接口电路充当了二者之间的“桥梁”。 输入/输出设备:计算机与外界(人或其他设备,包括另一台计算机)联系和沟通的桥梁,用户通

(完整版)微机原理及接口技术(习题答案)

范文范例学习指导 第1章微机运算基础 习题和思考题 1.请完成以下计算: 174.66D=(10101110.10101)B=(AE. A8)H 10101110101.01011B=(1397.344)D=(575.58)H 4BCH=(010*********)B=()BCD 2.设字长为8位,X=(2A)16,当X分别为原码、补码、反码和无符号数的时候,其真值 是多少? 答:当X表示原码时,其真值为:+101010 当X表示补码时,其真值为:+101010 当X表示反码时,其真值为:+101010 当X表示无符号数数时,其真值为:00101010 3.设字长为8位,用补码形式完成下列计算,要求有运算结果并讨论是否发生溢出? 120+18 -33-37 -90-70 50+84 答:120+18 其补码形式分别为:(120)补=01111000 (18)补=00010010 01111000 + 00010010 10001010 由于C s=0 ,C p=1,因此有溢出,结果错误 -33-37 其补码形式为:(-33)补=11011111 (-37)补=11011011 11011111 +11011011 10111010 由于C s=1, C p=1,所以没有溢出,结果正确 -90-70 其补码形式为:(-90)补=10011100 (-70)补=10111010 10011100 +10111010 01010110 由于C s=1, C p=0,所以有溢出,结果错误 50+84

其补码形式为:(50)补=00110010 (84)补=01010100 00110010 +01010100 10000110 由于C s=0, C p=1,所以有溢出,结果错误 4.请写出下列字符串的ASCII码值。 My name is Zhang san. 4D 79 6E 61 6D 65 69 73 5A 68 61 6E 67 73 61 6E 2E 第2章 80X86微机系统 习题与思考题 1.微型计算机主要由哪些基本部件组成?各部件的主要功能是什么? 答:微型计算机主要由输入设备、运算器、控制器、存储器和输出设备组成。 各部件的功能分别是:1、输入设备通过输入接口电路将程序和数据输入内存;2、运算器是进行算术运算和逻辑运算的部件,它是指令的执行部件;3、控制器是计算机的指挥中心,它负责对指令进行译码,产生出整个指令系统所需要的全部操作的控制信号,控制运算器、存储器、输入/输出接口等部件完成指令规定的操作;4、存储器用来存放程序、原始操作数、运算的中间结果数据和最终结果数据; 5、输出设备是CPU通过相应的输出接口电路将程序运行的结果及程序、数据送到的设备; 2.微处理器的发展过程是什么? 答:微型计算机的发展过程是: 第一代(1946~1957)——采用电子管为逻辑部件,以超声波汞延迟线、阴极射线管、磁芯和磁鼓等为存储手段;软件上采用机器语言,后期采用汇编语言。 第二代(1957~1965)——采用晶体管为逻辑部件,用磁芯、磁盘作内存和外存;软件上广泛采用高级语言,并出现了早期的操作系统。 第三代(1965~1971)——采用中小规模集成电路为主要部件,以磁芯、磁盘作内存和外存;软件上广泛使用操作系统,产生了分时、实时等操作系统和计算机网络。 第四代(1971~至今)——采用大规模集成电路(LSI)、超大规模集成电路(VLSI)为主要部件,以半导体存储器和磁盘为内、外存储器;在软件方法上产生了结构化程序设计和面向对象程序设计的思想。 3.简述80486微处理器的基本结构。 书12页 4.80486微处理器的工作模式有几种?当CS内容为1000H,IP内容为7896H,求在实地址 模式下的物理地址为多少? 答:实模式和保护模式及虚拟8086模式。当CS内容为1000H,IP内容为7896H,在实地

微机原理与接口习题

第1章习题 1、冯诺依曼计算机的内涵是什么这种计算机的程序运行是由指令流驱动的还是数据流驱动的 2、微型计算机系统有哪三个层次试简述它们的内涵及其联系和区别。 3、为什么把微型计算机的基本结构说成是总线结构试简述总线结构的优点。 4、微型计算机硬件系统由哪些部分组成各组成部分的功能是什么 5、计算机分那几类各有什么特点 6、微处理器应包含的最基本功能部件是哪些 7、微计算机应包含的最基本功能部件是哪些 8、微型计算机系统有哪几部分组成,简述各部分功能特点 9、一个完整的计算机系统通常包括系统软件和应用软件、硬件系统和软件系统、计算机及其外部设备、系统硬件和系统软件这四种组合中的哪一种 第1章习题解答 1、冯诺依曼计算机的内涵是什么这种计算机程序运行是由指令流驱动的还是数据流驱动的 答:冯诺依曼计算机的内涵: 由运算器、控制器、存储器、输入设备、输出设备5大部分组成计算机硬件。 数据和计算机指令采用二进制数形式表示,存储在计算机内部存储器中。 计算机工作原理的核心是“存储程序”和“程序控制”。事先编制好的由计算机指令组成的程序在执行前先装入存储器,控制器依据程序中的指令顺序周而复始地取出指令、分析指令、执行指令,根据指令的功能进行相应的运算,直到完成全部指令操作为止. 程序的运行是通过指令流来驱动的。 2、微型计算机系统有哪三个层次试简述它们的内涵及其联系和区别。 答:微型计算机系统的三个层次:微处理器、微型计算机和微型计算机系统。 三者的内涵: 微处理器是利用大规模集成电路技术,将组成计算机的核心部件——运算器和控制器集成在一块硅片上的集成电路,简称MPU,习惯上称CPU。 微型计算机则是以微处理器为核心,配以内存储器、输入/输出(I/O)接口电路,通过总线结构连接而构成的裸机。 微型计算机系统是由微型计算机配以相应的外围设备(如键盘、显示器、打印机、外存储器等)、电源和其他辅助设备(如面板、机架等),以及控制微型计算机工作的软件而构成的完整的计算系统。 它们三者之间是从局部到全局的关系。单纯的微处理器和单纯的微型计算机都不能独立工作。只有微型计算机系统才是完整的计算系统,才可正常工作。 3、为什么把微型计算机的基本结构说成是总线结构试简述总线结构的优点。 答:在微型计算机中,各组成部分之间是通过总线(包括地址总线、数据总线、控制总线)连接在一起而构成一个整体的,它们之间的信息交换也是通过总线进行。CPU通过总线与存储器和I/O接口电路连接,I/O接口和外设也是通过总线连接,即使在CPU内部,它的各功能部件也是通过总线相连的。因此微型计算机的基本结构就是总线结构。 微型计算机采用总线结构后,系统中各功能部件之间的相互关系变为各部件面向总线的单一关系。一个部件只要满足总线标准,就可直接连接到采用这种总线标准的系统中。这使得系统的设计与构造非常方便,同时也便于系统的扩充、升级和维修。 4、微型计算机硬件系统由哪些部分组成各组成部分的功能是什么 答:微型计算机硬件系统主要由CPU、存储器、I/O接口电路、输入/输出设备、总线,以及电源和一些辅助设备构成。 CPU:微机系统的核心部件,是运算和指挥控制中心。 存储器:包括内存和外存,是微机系统的存储和记忆部件,用以存放数据和程序。 I/O接口电路:CPU与输入/输出设备的连接与信息交换不能直接进行,I/O接口电路充当了二者之间的“桥梁”。 输入/输出设备:计算机与外界(人或其他设备,包括另一台计算机)联系和沟通的桥梁,用户通过输入/输出设备与微机系统互相通信。

微机原理与接口技术(第二版) 清华大学出版社

习题1 1.什么是汇编语言,汇编程序,和机器语言? 答:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。 汇编语言是面向及其的程序设计语言。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这种用符号代替机器语言的二进制码,就把机器语言编程了汇编语言。 使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。 2.微型计算机系统有哪些特点?具有这些特点的根本原因是什么? 答:微型计算机的特点:功能强,可靠性高,价格低廉,适应性强、系统设计灵活,周期短、见效快,体积小、重量轻、耗电省,维护方便。 这些特点是由于微型计算机广泛采用了集成度相当高的器件和部件,建立在微细加工工艺基础之上。 3.微型计算机系统由哪些功能部件组成?试说明“存储程序控制”的概念。 答:微型计算机系统的硬件主要由运算器、控制器、存储器、输入设备和输出设备组成。 “存储程序控制”的概念可简要地概括为以下几点: ①计算机(指硬件)应由运算器、存储器、控制器和输入/输出设备五大基本部件组成。 ②在计算机内部采用二进制来表示程序和数据。 ③将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作,使计算机在不需要人工干预的情况下,自动、高速的从存储器中取出指令加以执行,这就是存储程序的基本含义。 ④五大部件以运算器为中心进行组织。 4.请说明微型计算机系统的工作过程。 答:微型计算机的基本工作过程是执行程序的过程,也就是CPU自动从程序存

放的第1个存储单元起,逐步取出指令、分析指令,并根据指令规定的操作类型和操作对象,执行指令规定的相关操作。如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能。 5.试说明微处理器字长的意义。 答:微型机的字长是指由微处理器内部一次可以并行处理二进制代码的位数。它决定着计算机内部寄存器、ALU和数据总线的位数,反映了一台计算机的计算精度,直接影响着机器的硬件规模和造价。计算机的字长越大,其性能越优越。在完成同样精度的运算时,字长较长的微处理器比字长较短的微处理器运算速度快。 6.微机系统中采用的总线结构有几种类型?各有什么特点? 答:微机主板常用总线有系统总线、I/O总线、ISA总线、IPCI总线、AGP总线、IEEE1394总线、USB总线等类型。 7.将下列十进制数转换成二进制数、八进制数、十六进制数。 ①(4.75)10=(0100.11)2=(4.6)8=(4.C)16 ②(2.25)10=(10.01)2=(2.2)8=(2.8)16 ③(1.875)10=(1.111)2=(1.7)8=(1.E)16 8.将下列二进制数转换成十进制数。 ①(1011.011)2=(11.375)10 ②(1101.01011)2=(13.58)10 ③(111.001)2=(7.2)10 9.将下列十进制数转换成8421BCD码。 ① 2006=(0010 0000 0000 0110)BCD ② 123.456=(0001 0010 0011.0100 0101 0110)BCD 10.求下列带符号十进制数的8位基2码补码。 ① [+127]补= 01111111

微机原理及接口技术课后习题答案

《微机原理与接口技术》 复习题 第1章 1.简述名词的概念:微处理器、微型计算机、微型计算机系统。 答: (1)微处理器:微处理器(Microprocessor)简称μP或MP,或CPU。CPU是采用大规模和超大规模集成电路技术将算术逻辑部件ALU(Arithmetic Logic Unit)、控制部件CU (Control Unit)和寄存器组R(Registers)等三个基本部分以及部总线集成在一块半导体芯片上构成的电子器件。 (2)微型计算机:微型计算机(Microcomputer)是指以微处理器为核心,配上由大规模集成电路制作的存储器、输入/输出接口电路及系统总线等所组成的计算机,简称微机。 (3)微型计算机系统:微型计算机系统由硬件与软件两大部分组成,分别称为硬件(Hardware)系统与软件(Software)系统。其中,硬件(Hardware)系统由CPU、存储器、各类I/O接口、相应的I/O设备以及连接各部件的地址总线、数据总线、控制总线等组成。 软件(Software)系统:计算机软件(Software)是指为运行、维护、管理、应用计算机所编制的程序及程序运行所需要的数据文档资料的总和。一般把软件划分为系统软件和应用软件。其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。 2.简述名词的概念:指令寄存器、地址寄存器、标志寄存器。 答: (1)指令寄存器:指令寄存器(Instruction Register,IR)用来保存计算机当前正在执行或即将执行的指令。当一条指令被执行时,首先,CPU从存取出指令的操作码,并存入IR中,以便指令译码器进行译码分析。 (2)地址寄存器:地址寄存器(Address Register,AR)被动地接受IP传送给它的地址值(二进制地址),AR的作用是保持IP送来的地址,并且以并行方式连接输出到CPU的地址引脚上,以便CPU访问指定的存单元。 (3)标志寄存器:标志寄存器(Flags,F)是CPU中不可缺少的程序状态寄存器,因此,也称程序状态字寄存器(PSW),所谓状态是指算术或逻辑运算后,结果的状态以二进制的0或1在标志寄存器中标识出来,例如,运算结果有进位,则进位标志位CF=1,否则为0。 3.何谓IA-32处理器? 答:

微机原理与接口技术学习心得

本学期微机原理课程已经结束,关于微机课程的心得体会甚多。微机原理与接口技术作为一门专业课,虽然要求没有专业课那么高,但是却对自己今后的工作总会有一定的帮助。记得老师第一节课说学微机原理是为以后的单片机打基础,这就让我下定决心学好微机原理这门课程。 初学《微机原理与接口技术》时,感觉摸不着头绪。面对着众多的术语、概念及原理性的问题不知道该如何下手。在了解课程的特点后,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。可以通过学习一个模型机的组成和指令执行的过程,了解和熟悉计算机的结构、特点和工作过程。 《微机原理与接口技术》课程有许多新名词、新专业术语。透彻理解这些名词、术语的意思,为今后深入学习打下基础。一个新的名词从首次接触到理解和应用,需要一个反复的过程。而在众多概念中,真正关键的并不是很多。比如“中断”概念,既是重点又是难点,如果不懂中断技术,就不能算是搞懂了微机原理。在学习中凡是遇到这种情况,绝对不轻易放过,要力求真正弄懂,搞懂一个重点,将使一大串概念迎刃而解。 学习过程中,我发现许多概念很相近,为了更好地掌握,将一些容易混淆的概念集中在一起进行分析,比较它们之间的异同点。比如:微机原理中,引入了计算机由五大部分组成这一概念;从中央处理器引出微处理器的定义;在引出微型计算机定义时,强调输入/输出接口的重要性;在引出微型计算机系统的定义时,强调计算机软件与计算机硬件的相辅相成的关系。微处理器是微型计算机的重要组成部分,它与微型计算机、微型计算机系统是完全不同的概念在微机中,最基础的语言是汇编语言。汇编语言是一个最基础最古老的计算机语言。语言总是越基础越重要,在重大的编程项目中应用最广泛。就我的个人理解,汇编是对寄存的地址以及数据单元进行最直接的修改。而在某些时候,这种方法是最有效,最可靠的。 然而,事物总有两面性。其中,最重要的一点就是,汇编语言很复杂,对某个数据进行修改时,本来很简单的一个操作会用比较烦琐的语言来解决,而这些语言本身在执行和操作的过程中,占有大量的时间和成本。在一些讲求效率的场合,并不可取。 汇编语言对学习其他计算机起到一个比较、对照、参考的促进作用。学习事物总是从最简单基础的开始。那么学习高级语言也当然应当从汇编开始。学习汇

微机原理与接口技术习题

1.8051微控制器包含哪些主要功能模块?经典8051 MCU有哪些功能特点? 8051微控制器包含CPU、存储器(ROM、RAM)、输入输出(I/O)接口、中断系统、定时器/计数器、串行接口和时钟、复位电路以及特殊功能寄存器SFR。 经典8051MCU有8位CPU,包含运算器和控制器两大部分;内部的RAM和可扩展的外部RAM、内部的ROM和可扩展的外部ROM;21个特殊寄存器SFR,用于内部功能部件的管理、控制和监视;4个并行8位I/O接口;具有5个中断源的中断系统,且有2个中断优先权;有2个16位的定时器/计数器,具有4种工作方式;1个全双工的串行口,用于MCU与具有串行接口的的外设进行异步串行通信,也可以扩展I/O接口;具有较强位寻址、位处理能力的布尔处理器;具有内部时钟电路;还有属于CISC的指令系统。2.8051微控制器的存储器在结构上有何特点?ROM、RAM各有哪几种地址空间?分别如何 使用? 8051微控制器的存储器采用哈佛结构,是程序存储器和数据存储器分别编址的结构,即ROM和RAM是分开寻址的。 ROM(程序存储器)可以分为内部和外部两部分:内部8K空间(0000H-1FFFH)、外部64K空间(0000H-FFFFH)。其中内外部的低8KB空间具有相同的地址,会有地址重叠问题,可以通过控制信号EA进行选择,EA=1时表示优先选用内部ROM的低8K位,EA=0时表示全部选用外部ROM。 RAM(数据存储器)也有内部和外部两个空间,内部256B空间(00H-FFH)、外部64KB 空间(0000H-FFFFH)。其中内部RAM中低32位(00H-1FH)是工作寄存器,共8组,可用PSW寄存器中的两位RS1、RS0来确定。(20H-2FH)是位寻址区,可用CPU用位操作指令直接访问。(30H-FFH)通常作为数据缓存区和堆栈区,其中(30H-7FH)可运用直接寻址和寄存器间接寻址这两种寻址方式,对其进行访问;而(80H-FFH)则只能采用寄存器间接寻址方式进行访问。外部数据存储器和内部的低256B地址重叠区可采用不同指令访问,外部区只能用MOVX类指令,通过累加器ACC与其进行数据传输。 3.程序状态寄存器PSW的作用是什么?常用状态标志有哪几位?作用是什么? PSW用来存放程序状态信息,表征指令的执行状态,供程序查询和判别之用。 常用的有CY(进位标志)、AC(辅助进位)、OV(溢出标志)、P(奇偶标志) CY:进位标志。在。在加、减法运算时,若高位(D7)发生进位或借位则被置1(即C=1),否则被清0(C=0); AC:辅助进位标志。在加、减法运算时,若低4位向高4位发生进位或借位则AC=1,

《微机原理与接口技术》参考答案

《微机原理与接口技术》参考答案 《微机原理与接口技术》习题参考答案习题 2 1. 为何说8086CPU是16位CPU?答:16位指的是8086CPU的字长,而字长一般来说和运算器、寄存器、总线宽度一致。因为8086CPU的内部寄存器、内部运算部件以及内部操作都是按16位设计的,这决定了它的字长为16位。 2. 8086CPU哪两个单元组成?其中,指令队列在哪个单元中,有何作用?答:总线接口单元和执行单元。指令队列在BIU中。它的作用是当EU在执行指令时,空闲的BIU可以从内存读取后续指令到指令队列,这样就可以将取指令工作和执行指令工作重叠进行,从而提高CPU的工作效率,加快指令的执行速度。 3. 8086CPU中8位寄存器和16位寄存器是什么关系?答:8086的通用寄存器包括数据寄存器、指

针寄存器和变址寄存器。其中数据寄存器包含AX、BX、CX、DX四个16位寄存器,但他们每个都可以分开作为两个单独的8位寄存器使用。8086的指针寄存器和变址寄存器不可分割为8位寄存器。4. 8086CPU中的IP寄存器有何用途?答:IP寄存器是指令指针寄存器,用来存放下一条要执行的指令在代码段中的偏移地址。在程序运行过程中,IP寄存器始终指向下一条指令的首地址,与CS寄存器联合确定下一条指令的物理地址。8086就是通过IP寄存器来控制指令序列的执行流程。 5. 在标志寄存器中,用于反映运算结果属性的标志位有哪些?它们每一位所表示的含义是什么?答:有CF、PF、AF、ZF、SF、OF。它们的含义如下:CF:进位标志。它记录运算时从最高有效位产生的进位值或结果值。最高有效位有进位或有借位时CF=1,否则CF=0。PF:奇偶标志。它记录运算结果的奇偶检验条件。当结果操作数

微机原理与接口技术习题答案

《微机原理与接口技术》习题答案 一、单项选择题 1、80486CPU进行算术和逻辑运算时,可处理的信息的长度为( D )。 A、32位 B、16位 C、8位 D、都可以 2、在下面关于微处理器的叙述中,错误的是( C ) 。 A、微处理器是用超大规模集成电路制成的具有运算和控制功能的芯片 B、一台计算机的CPU含有1个或多个微处理器 C、寄存器由具有特殊用途的部分内存单元组成,是内存的一部分 D、不同型号的CPU可能具有不同的机器指令 3、若用MB作为PC机主存容量的计量单位,1MB等于( B )字节。 A、210个字节 B、220个字节 C、230个字节 D、240个字节 4、运算器在执行两个用补码表示的整数加法时,判断其是否溢出的规则为( D )。 A、两个整数相加,若最高位(符号位)有进位,则一定发生溢出 B、两个整数相加,若结果的符号位为0,则一定发生溢出 C、两个整数相加,若结果的符号位为1,则一定发生溢出 D、两个同号的整数相加,若结果的符号位与加数的符号位相反,则一定发生溢出 5、运算器的主要功能是( C )。 A、算术运算 B、逻辑运算 C、算术运算与逻辑运算 D、函数运算 6、指令ADD CX,55H[BP]的源操作数的寻址方式是(D )。 A、寄存器寻址 B、直接寻址 C、寄存器间接寻址 D、寄存器相对寻址 7、设(SS)=3300H,(SP)=1140H,在堆栈中压入5个字数据后,又弹出两个字数据,则(SP)=(A ) A、113AH B、114AH C、1144H D、1140H 8、若SI=0053H,BP=0054H,执行SUB SI,BP后,则( C)。 A、CF=0,OF=0 B、CF=0,OF=1 C、CF=1,OF=0 D、CF=1,OF=1 9、已知(BP)=0100H,(DS)=7000H,(SS)=8000H,(80100H)=24H,(80101H)=5AH,(70100H)=01H,(70101H)=02H,指令MOV BX,[BP]执行后,(BX)=(D ) 。 A、0102H B、0201H C、245AH D、5A24H 10、实模式下80486CPU对指令的寻址由(A )决定。 A、CS,IP B、DS,IP C、SS,IP D、ES,IP 11、使用80486汇编语言的伪操作指令定义: VAL DB 2 DUP(1,2,3 DUP(3),2 DUP(1,0)) 则

微机原理与接口技术(习题答案)(DOC)

, 第1章微机运算基础 习题和思考题 1.请完成以下计算: 174.66D=(.10101)B=(AE. A8)H .01011B=()D=()H 4BCH=(0)B=()BCD 2.设字长为8位,X=(2A)16,当X分别为原码、补码、反码和无符号数的时候,其真值 是多少 答:当X表示原码时,其真值为:+101010 ) 当X表示补码时,其真值为:+101010 当X表示反码时,其真值为:+101010 当X表示无符号数数时,其真值为:00101010 3.设字长为8位,用补码形式完成下列计算,要求有运算结果并讨论是否发生溢出 120+18 -33-37 -90-70 50+84 答:120+18 \ 其补码形式分别为:(120)补=01111000 (18)补=00010010 01111000 + 00010010 由于C s=0 ,C p=1,因此有溢出,结果错误 -33-37 其补码形式为:(-33)补=(-37)补= , +

由于C s=1, C p=1,所以没有溢出,结果正确 -90-70 其补码形式为:(-90)补=(-70)补= + 01010110 》 由于C s=1, C p=0,所以有溢出,结果错误 50+84 其补码形式为:(50)补=00110010 (84)补=01010100 00110010 +01010100 由于C s=0, C p=1,所以有溢出,结果错误 4.( 5.请写出下列字符串的ASCII码值。 My name is Zhang san. 4D 79 6E 61 6D 65 69 73 5A 68 61 6E 67 73 61 6E 2E 第2章 80X86微机系统 习题与思考题 1.微型计算机主要由哪些基本部件组成各部件的主要功能是什么 答:微型计算机主要由输入设备、运算器、控制器、存储器和输出设备组成。 各部件的功能分别是:1、输入设备通过输入接口电路将程序和数据输入内存;2、运算器是进行算术运算和逻辑运算的部件,它是指令的执行部件;3、控制器是计算机的指挥中心,它负责对指令进行译码,产生出整个指令系统所需要的全部操作的控制信号,控制运算器、存储器、输入/输出接口等部件完成指令规定的操作;4、存储器用来存放程序、原始操作数、运算的中间结果数据和最终结果数据; 5、输出设备是CPU通过相应的输出接口电路将程序运行的结果及程序、数据送到的设备; 2.> 3.微处理器的发展过程是什么 答:微型计算机的发展过程是: 第一代(1946~1957)——采用电子管为逻辑部件,以超声波汞延迟线、阴极射线管、磁芯和磁鼓等为存储手段;软件上采用机器语言,后期采用汇编语言。 第二代(1957~1965)——采用晶体管为逻辑部件,用磁芯、磁盘作内存和外存;软件上广泛采用高级语言,并出现了早期的操作系统。

微机原理与接口技术期末考试试题及答案

微机原理与接口技术期末考试题库 1.微机系统的硬件由哪几部分组成? 答:三部分:微型计算机(微处理器,存储器,I/0接口,系统总线),外围设备,电源。 2.什么是微机的总线,分为哪三组? 答:是传递信息的一组公用导线。分三组:地址总线,数据总线,控制总线。 3.8086/8088CPU的内部结构分为哪两大模块,各自的主要功能是什 么? 答:总线接口部件(BIU)功能:根据执行单元EU的请求完成CPU 与存储器或IO设备之间的数据传送。执行部件(EU),作用:从指令对列中取出指令,对指令进行译码,发出相应的传送数据或算术的控制信号接受由总线接口部件传送来的数据或把数据传送到总线接 口部件进行算术运算。 4.8086指令队列的作用是什么? 答:作用是:在执行指令的同时从内存中取了一条指令或下几条指令,取来的指令放在指令队列中这样它就不需要象以往的计算机那样让CPU轮番进行取指和执行的工作,从而提高CPU的利用率。 5.8086的存储器空间最大可以为多少?怎样用16位寄存器实现对 20位地址的寻址?完成逻辑地址到物理地址转换的部件是什么?

答:8086的存储器空间最大可以为2^20(1MB);8086计算机引入了分段管理机制,当CPU寻址某个存储单元时,先将段寄存器内的内容左移4位,然后加上指令中提供的16位偏移地址形成20位物理地址。 6.段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令 的物理地址为多少?指向这一物理地址的CS值和IP值是唯一的吗? 答:指令的物理地址为21F00H;CS值和IP值不是唯一的,例如:CS=2100H,IP=0F00H。 7.设存储器的段地址是4ABFH,物理地址为50000H,其偏移地址 为多少? 答:偏移地址为54100H。(物理地址=段地址*16+偏移地址) 8.8086/8088CPU有哪几个状态标志位,有哪几个控制标志位?其意 义各是什么? 答:状态标志位有6个:ZF,SF,CF,OF,AF,PF。其意思是用来反映指令执行的特征,通常是由CPU根据指令执行结果自动设置的;控制标志位有3个:DF,IF,TF。它是由程序通过执行特定的指令来设置的,以控制指令的操作方式。 9.8086CPU的AD0~AD15是什么引脚? 答:数据与地址引脚 10.INTR、INTA、NMI、ALE、HOLD、HLDA引脚的名称各是什么?

微机原理与接口技术

第二章 8086系统结构 一、 8086CPU 的内部结构 1.总线接口部件BIU (Bus Interface Unit ) 组成:20位地址加法器,专用寄存器组,6字节指令队列,总线控制电路。 作用:负责从内存指定单元中取出指令,送入指令流队列中排队;取出指令所需的操作 数送EU 单元去执行。 工作过程:由段寄存器与IP 形成20位物理地址送地址总线,由总线控制电路发出存储器“读”信号,按给定的地址从存储器中取出指令,送到指令队列中等待执行。 *当指令队列有2个或2个以上的字节空余时,BIU 自动将指令取到指令队列中。若遇到转移指令等,则将指令队列清空,BIU 重新取新地址中的指令代码,送入指令队列。 *指令指针IP 由BIU 自动修改,IP 总是指向下一条将要执行指令的地址。 2.指令执行部件EU (Exection Unit) 组成:算术逻辑单元(ALU ),标志寄存器(FR ),通用寄存器,EU 控制系统等。 作用:负责指令的执行,完成指令的操作。 工作过程:从队列中取得指令,进行译码,根据指令要求向EU 内部各部件发出控制命令,完成执行指令的功能。若执行指令需要访问存储器或I/O 端口,则EU 将操作数的偏移地址送给BIU ,由BIU 取得操作数送给EU 。 二、 8088/8086的寄存器结构 标志寄存器 ALU DI DH SP SI BP DL AL AH BL BH CL CH ES SS DS CS 内部暂存器输入 / 输出控制 电路1432EU 控制系 统20位16位8086总线指令 队列总线 接口单元执行 单元 6 516位 属第三代微处理器 运算能力: 数据总线:DB

微机原理与接口技术复习练习题与答案

13级《微机原理与接口技术》复习练习题与答案 (韶关学院计算机科学学院彭玄璋) 一、填空题 1、8086/8088 CPU内部结构按功能分为两部分,即由执行单元和总线接口 单元组成。 2、若CPU的数据线宽度为16位,则它的字长为16 位;地址线宽度为20位,则它的寻址空间为1MB 。 3、8086CPU为了适应各种应用场合有两种工作模式,即是最小模式和最大模式。 4、8086/8088CPU复位后,CS的内容为0FFFFH ,IP的内容为0000H 。 5、8086的16位标志寄存器包括 6 个状态标志位和 3 个控制标志位。 6、计算机的I/O端口地址的编址方式有统一编址和独立编址, 而8086CPU寻址外设采用独立编址方式。 7、CPU与外设间有4种I/O信息传送方式,即无条件传送、查询传送 中断传送、直接存储器存取(DMA)。 8、若某输出外设的I/O接中的数据端口地址为100H,要将字节数据从8086CPU 输出到外设的指令是MOV DX,100H 和OUT DX,AL 。 9、响应可屏蔽中断INTR的条件是控制标志IF= 1 。 10、若8253的某一计数器用于输出方波,该计数器的工作方式为 3 ;若该计数器输入频率为100KHz,输出方波频率为10KHz,则计数初值应设为10 。 11、串行通信协议分为异步通信和同步通信。 12、波特率是指单位时间内传送二进制数据的位数。 13、8088 组成的系统中,存储器分若干个不超过64K 字节的段。 14、当8088CPU的INTR端输入一个高电平时,可屏蔽中断获得了中断请求。 15、8088工作于最小工作模式时,控制总线由CPU本身产生,工作于最大工作模式时,控制总线由总线控制器8288 产生。 16、数据的并行I/O方式是以字节或字为单位进行传送;数据的串行I/O

微机原理与接口技术知识点总结整理

《微机原理与接口技术》复习参考资料 第一章概述 一、计算机中的数制 1、无符号数的表示方法: (1)十进制计数的表示法 特点:以十为底,逢十进一; 共有0-9十个数字符号。 (2)二进制计数表示方法: 特点:以2为底,逢2进位; 只有0和1两个符号。 (3)十六进制数的表示法: 特点:以16为底,逢16进位; 有0--9及A—F(表示10~15)共16个数字符号。 2、各种数制之间的转换 (1)非十进制数到十进制数的转换 按相应进位计数制的权表达式展开,再按十进制求和。(见书本1.2.3,1.2.4)(2)十进制数制转换为二进制数制 ●十进制→二进制的转换: 整数部分:除2取余; 小数部分:乘2取整。 ●十进制→十六进制的转换: 整数部分:除16取余; 小数部分:乘16取整。 以小数点为起点求得整数和小数的各个位。 (3)二进制与十六进制数之间的转换 用4位二进制数表示1位十六进制数 3、无符号数二进制的运算(见教材P5) 4、二进制数的逻辑运算 特点:按位运算,无进借位 (1)与运算 只有A、B变量皆为1时,与运算的结果就是1 (2)或运算 A、B变量中,只要有一个为1,或运算的结果就是1 (3)非运算 (4)异或运算 A、B两个变量只要不同,异或运算的结果就是1 二、计算机中的码制 1、对于符号数,机器数常用的表示方法有原码、反码和补码三种。数X的原码记作[X]原,反码记作[X]反,补码记作[X]补。

注意:对正数,三种表示法均相同。 它们的差别在于对负数的表示。 (1)原码 定义: 符号位:0表示正,1表示负; 数值位:真值的绝对值。 注意:数0的原码不唯一 (2)反码 定义: 若X>0 ,则[X]反=[X]原 若X<0,则[X]反= 对应原码的符号位不变,数值部分按位求反 注意:数0的反码也不唯一 (3)补码 定义: 若X>0,则[X]补= [X]反= [X]原 若X<0,则[X]补= [X]反+1 注意:机器字长为8时,数0的补码唯一,同为00000000 2、8位二进制的表示范围: 原码:-127~+127 反码:-127~+127 补码:-128~+127 3、特殊数10000000 ●该数在原码中定义为:-0 ●在反码中定义为:-127 ●在补码中定义为:-128 ●对无符号数:(10000000)2= 128 三、信息的编码 1、十进制数的二进制数编码 用4位二进制数表示一位十进制数。有两种表示法:压缩BCD码和非压缩BCD码。(1)压缩BCD码的每一位用4位二进制表示,0000~1001表示0~9,一个字节表示两位十进制数。 (2)非压缩BCD码用一个字节表示一位十进制数,高4位总是0000,低4位的0000~1001表示0~9 2、字符的编码 计算机采用7位二进制代码对字符进行编码 (1)数字0~9的编码是0110000~0111001,它们的高3位均是011,后4位正好与其对应的二进制代码(BCD码)相符。

微机原理与接口技术试题库(含答案)汇总

一、问答题 1、下列字符表示成相应的ASCII码是多少? (1)换行0AH (2)字母“Q”51H (3)空格20H 2、下列各机器数所表示数的范围是多少? (1)8位二进制无符号定点整数; 0~255 (2)8位二进制无符号定点小数;0.996094 (3)16位二进制无符号定点整数;0~65535 (4)用补码表示的16位二进制有符号整数;-32768~32767 3、(111)X=273,基数X=?16 4、有一个二进制小数X=0.X1X2X3X4X5X6 (1)若使X≥1/2,则X1……X6应满足什么条件? X1=1 若使X>1/8,则X1……X6应满足什么条件?X1∨X2 ∨X3=1 (2) 5、有两个二进制数X=01101010,Y=10001100,试比较它们的大小。 (1)X和Y两个数均为无符号数;X>Y (2)X和Y两个数均为有符号的补码数。X

微机原理与接口技术习题集1

963.在8253过对其中一个____的编程设定和控制工作方式,其端口地址是当A1A0=_____是的地址。 【参考答案】P169 例2 控制口,11B。 964.若要在8253A的计数工程中读取计数值,应该____。 A.直接用IN指令读出CE的容 B.先对8253A写入一个锁存命令,将当前的CE容锁存入OL中,然后再用IN指令将OL 的容取到CP中,再发出命令让OL的容开始与CE同步 C.先对8253A写入一个锁存命令,将当前的CE容锁存入OL中,然后再用IN指令将OL的容取到CPU中,此后OL的容自动开始与CE同步 【参考答案】P169 例3 C。 965.在某微机系统中,8253的3个计数器的端口地址分别为3F0H、3F2H和3F4H,控制自寄存器的端口地址为3F6H,要求8253的通道0工作于方式3,采用BCD计数,输入脉冲频率为2MHz,输出方波频率为2KHz,使编写初始化程序片断。 分析: (1)计算计数初值 输入脉冲频率输出方波频率 2MHz 2KHz == = 计数初值1000(2)确定方式控制字 0 0 1 1 0 1 1 10B=37H {{{ 选择通道016 位 读 写 方 式 3 十 进 制 方式控制字: 【参考答案】P169 例4 初始化程序片断 MOV AL, 37H MOV DX, 3F6H OUT DX, AL ;送方式控制字到控制口 MOV AL, 00 MOV DX, 3F0H OUT DX, AL ;送计数初值低字节到通道0 MOV AL, 10H OUT DX, AL ;送计数初值高字节到通道0 966.设定时器/计数器8253的CLK1端输入时钟信号的频率为2.5kHz,要求在OUT端产生频率为1Hz的方波,则8253的计数器1#应工作于方式____,且送入计数器1#的计数初值为_____。

相关文档
相关文档 最新文档