最新16。32位微机原理、汇编语言及接口技术(第二版)第三章课后习题答案。

最新16。32位微机原理、汇编语言及接口技术(第二版)第三章课后习题答案。
最新16。32位微机原理、汇编语言及接口技术(第二版)第三章课后习题答案。

第3章

3.1:汇编语言有什么特点

解:

汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数,可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序

3.2编写汇编语言源程序时,一般的组成原则是什么?

解:

(1)完整的汇编语言源程序由段组成

(2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列

(3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点

(4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内

(5)通常,程序还需要一个堆栈段

3.3 MODEL伪指令是简化段定义源程序格式中必不可少的语句,它设计了哪7种存储模式?各用于创建什么性质的程序?

解:

3.4如何规定一个程序执行的开始位置,主程序执行结束应该如何返回DOS,源程序在何处停止汇编过程?

解:

开始位置:用标号指明

返回DOS:利用DOS功能调用的4CH子功能来实现

汇编停止:执行到一条END伪指令时,停止汇编

3.5逻辑段具有哪些属性?

解:

段定位、段组合和段类型。

3.6给出采用一个源程序格式书写的例题3.1源程序

例题3.1:创建一个在屏幕上显示一段信息的程序……解:

stack segment stack

db 1024(0)

stack ends

data segment

string db 'Hello,Assembly!',0dH,0aH,‘$’

data ends

code segment 'code'

assume cs:code,ds:data,ss:stack

start: mov dx,offset string

mov ah,9

int 21h

code ends

end start

3.7DOS支持哪两种可执行程序结构,编写这两种程序时需要注意什么?

解:

(1). EXE程序

程序可以有多个代码段和多个数据段,程序长度可以超过64KB

通常生成EXE结构的可执行程序

(2). COM程序

只有一个逻辑段,程序长度不超过64KB

需要满足一定条件才能生成COM结构的可执行程序(MASM 6.x需要采用TINY模式)

3.8举例说明等价“EUQ”伪指令和等号“=”伪指令的用途

解:

符号定义伪指令有“等价EQU”和“等号=”:

符号名 EQU 数值表达式

符号名 EQU <字符串>

符号名=数值表达式

EQU用于数值等价时不能重复定义符号名,但“=”允许有重复赋值。例如:X= 7 ;等效于:X equ 7

X= X+5 ;“X EQU X+5”是错误的

3.9 给出下列语句中,指令立即数(数值表达式)的值

(1)mov al,23h AND 45h OR 67h

(2)mov ax,1234h/16+10h

3:mov ax,23h SHL 4

4:mov al, ‘a’and(NOT(‘a’-‘A’))

5:mov ax,(76543 LT 32768) XOR 7654h

解:

(1) al=67h

(2) ax=133h,dx=4h

(3) ax=0230h

(4) al=41h

(4) ax=7654h

3.10画图说明下列语句分配的存储空间及初始化的数据值

(1)byte_var db ‘abc’,10,10h,‘EF’,3 dup(-1,?,3,dup(4))

(2:)word_var dw 10h,-5,3,dup(?)

解:

3.11

请设置一个数据段,按照如下要求定义变量:

(1)my1b为字符串常量,表示字符串“personal Computer”

(2)my2b为用十进制数表示的字节变量,这个数的大小为20

(3)my3b为用十六进制数表示的字节变量,这个数的大小为20

(4)my4b为用二进制数表示的字节变量,这个数的大小为20

(5)my5w为20个未赋值的字变量

(6)my6c为100的符号常量

(7)my7c为字符串常量,代替字符串“personal Computer”

解:.data

my1b db 'Personal Computer'

my2b db 20

my3b db 14h

my4b db 00010100b

my5w dw 20 dup(?)

my6c = 100

my7c = <'Personal Computer'>

3.12 希望控制变量或程序代码在段中的偏移地址,应该使用哪个伪指令?

解:

利用定位伪指令控制,如org,even,align

3.13名字和符号有什么属性?

解:

包括逻辑地址和类型两种属性。

3.14设在某个程序中有如下片段,请写出每条传送指令执行后寄存器AX的内容:

;数据段

Org 100h

Varw dw 1234h,5678h

Varb db 3,4

Vard dd 12345678h

Buff db 10 dup(?)

Mess db ‘hello’

;代码段

Mov ax,offset mess

Mov ax,type buff+type mess+type vard

Mov ax,sizeof varw+sizeof buff+sizeof mess

Mov ax,lengthof varw+lengthof vard

解:

;数据段

org 100h

varw dw 1234h , 5678h

varb db 3 , 4

vard dd 12345678h

buff dd 10 dup(?)

mess db 'Hello'

;代码段

mov ax , offset varb + offset mess

mov ax , type buff + type mess + type vard

mov ax , sizeof varw+ sizeof buff+ sizeof mess

mov ax , lengthof varw+ lengthof vard

3.15假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的具体错误原因。

(1)mov byte ptr {bx},1000

(2)mov bx,offset myword{si}

(3)cmp mybyte1,mybyte2

(4)mov mybyte1,al+1

(5)sub al,myword

(6)jnz myword

解:

(1) 1000超过一个字节所能表达的最大整数

(2)SI应为偶数

(3)两个内存单元不能直接运算

(4)应改为[al+1]

(5)条件转移指令后面应接标号,而不是变量

3.16编写一个程序,把从键盘输入的一个小写字母用大写字母显示出来

解:

mov ah,1 ;只允许输入小写字母

int 21h

sub al,20h ;转换为大写字母

mov dl,al

mov ah,2

int 21h ;显示

3.17 已知用于LED数码管的显示代码表为:

LEDtable db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h

db 80h,90h,88h,83h,0c6h,0c1h,86h,8eh

它依次表示0~9,A~F这16个数码的显示代码。现编写一个程序实现将lednum中的一个数字(0~9,a~f)转换成对应的LED显示代码

解:

mov bx,offset LEDtable

mov al,lednum

xlat

3.18 编制一个程序,把变量bufX和bufY中较大者存入bufZ;若两者相等,则把其中之一存入bufZ中。假设变量存放的是8位有符号数。

解:

mov ax, bufX

cmp ax, bufY

jae done

mov ax, bufY

done: mov bufZ, ax

3.19为有符号16位数,请将它们的符号状态保存在signX,即:如果变量值大于等于0,保存0;如果X小于0,保存-1。编写该程序。

设变量bufX 解:

.model small

.stack

.data

bufX dw -7

signX db ?

.code

.startup

cmp bufX,0 ;test bufX,80h

jl next ;jnz next

mov signX,0

jmp done

next: mov signX,-1

done: .exit 0

end

3.20bufX、bufY 和bufZ是3个有符号16进制数,编写一个比较相等关系的程序

(1)如果这3个数都不相等,则显示0

(2)如果这三个数中有两个数相等,则显示1

(3)如果这三个数都相等,则显示2

解:

mov dl,’2’

mov ax,bufX

cmp ax,bufY

je next1

dec dl

next1: cmp ax,bufZ

je next2

dec dl

next2: mov ah,2

int 21h

3.21 例3.7中,如果要实现所有为1的位都顺序执行相应的处理程序段(而不是例题中仅执行最低为1位的处理程序段),请写出修改后的代码段?

解:

;代码段

mov al,number

mov bx,0 ;BX←记录为1的位数

restart: cmp al,0 ;AL=0结束

jz done

again: shr al,1 ;最低位右移进入CF

jc next ;为1,转移

inc bx ;不为1,继续

jmp again

next: push ax

push bx

shl bx,1 ;位数乘以2(偏移地址要用2个字节单元)

jmp addrs[bx] ;间接转移:IP←[table+BX]

;以下是各个处理程序段

fun0: mov dl,'0'

jmp disp

fun1: mov dl,'1'

jmp disp

fun2: mov dl,'2'

jmp disp

fun3: mov dl,'3'

jmp disp

fun4: mov dl,'4'

jmp disp

fun5: mov dl,'5'

jmp disp

fun6: mov dl,'6'

jmp disp

fun7: mov dl,'7'

jmp disp

;

disp: mov ah,2 ;显示一个字符

int 21h

pop bx

pop ax

jmp restart

done: …

3.22编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H等10个

字节数据之和,并将结果存入字节变量SUM中(不考虑溢出和进位)。

;wjxt322.asm

.model small

.stack

.data

b_data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h ;原始数据

num equ 10 ;数据个数

sum db ? ;预留结果单元

.code

.startup

xor si, si ;位移量清零

xor al, al ;取第一个数

mov cx, num ;累加次数

again: add al, b_data[si] ;累加

inc si ;指向下一个数

loop again ;如未完,继续累加

mov sum, al ;完了,存结果

.exit 0

end

3.23 求主存0040h:0开始的一个64KB物理段中共有多少个空格?

; wjxt323.asm

.model small

.code

start: mov ax,0040h ;送段地址

mov ds, ax

mov si, 0 ;偏移地址

mov cx, si ;计数(循环次数)

xor ax, ax ;空格计数器清零

again: cmp byte ptr [si], 20h ;与空格的ASCII码比较

jne next ;不是空格,转

inc ax ;是空格,空格数加1

next: inc si ;修改地址指针

loop again ;cx=cx-1,如cx=0 退出循环

.exit 0

end start

3.24 编写计算100个16位正整数之和的程序。如果和不超过16位字的范围(65535),则保存其和到wordsum,如超过则显示‘overflow’。

答:

;数据段

count equ 100

parray dw count dup(?) ;假设有100个数据

wordsum dw 0

msg db ‘overflow’,’$’

;代码段

mov cx,count

mov ax,0

mov bx,offset parray

again: add ax,[bx]

jnc next

mov dx,offset msg

mov ah,9

int 21h ;显示溢出信息

jmp done ;然后,跳出循环体

next: add bx,2

loop again

mov wordsum,ax

done: …

3.25 编程把—个16位无符号二进制数转换成为用8421BCD码表示的5位十进制数。转换算法可以是:用二进制数除以10000,商为“万位”,再用余数除以1000,得到“千位”;依次用余数除以l00、10和l,得到“百位”、“十位”和“个位”。

;wjxt325.asm

.model small

.stack 256

.data

array dw ? ;源字数据

dbcd db 5 dup(?) ;五位bcd结果,高对高低对低

.code

.startup

mov dx, array ;取源数据(余数)

mov bx, 10000 ;除数

mov cx, 10 ;除数系数

mov si, 4 ;目的数据高位位移量

again: mov ax, dx ;dx.ax中存放被除数

mov dx, 0

div bx ;除于bx,商ax,余数dx

mov dbcd[si], al ;商<10,存结果

push dx ;暂存余数

mov ax, bx ;除数除于10

mov dx,0

div cx ;dx.ax除于cx,商ax、余数0存在dx

mov bx, ax ;bx是除数

pop dx

dec si ;目的数据位移量减1

jnz again

mov dbcd, dl ;存个位数( < 10 )

.exit 0

end

3.26过程定义的一般格式是怎样的?子程序开始为什么常有PUSH指令?返回钱为什么常有POP指令?下面完成16位无符号数累加的子程序有什么不妥吗?若有,请改正。Carzy PROC

Push ax

Xor ax,ax

Xor ax,dx

Again add ax,[bx]

Adc dx,0

Inc bx

Inc bx

Loop again

Ret

ENDP crazy

解:

(1)汇编语言中,子程序要用一对过程伪指令PROC和ENDP声明,格式如下:

过程名PROC [NEAR|FAR]

……;过程体

过程名ENDP

(2)保护用到的寄存器内容,以便子程序返回时进行相应的恢复。

(3)改错:

crazy proc

pish bx

push cx

xor ax,ax

xor dx,dx

again:add a,[bx]

adc dx,0

inc bx

inc bx

loop again

pop cx

pop bx

3.27 编写一个源程序,在键盘上按一个键,将从AL返回的ASCⅡ码值显示出来,如果按下ESC键则程序退出。

解(不需调用HTOASC子程序):

again: mov ah,1

int 21h

cmp al,1bh ;ESC的ASCII码是1bh

je done

mov dl,al

mov ah,2

int 21h ;是大写字母则转换为小写字母

jmp again

done: …

3.28请按如下说明编写子程序:

;子程序功能:把用ASCⅡ码表示的两位十进制数转换为对应二进制数

;入口参数:DH=十位数的ASCⅡ码,DL=个位数的ASCⅡ码

;出口参数:AL=对应的二进制数

解答:

asctob proc

push cx

and dh,0fh ;先转换十位数

shl dh,1 ;十位数乘以10(采用移位指令)

mov ch,dh

shl dh,1

shl dh,1

add dh,ch

and dl,0fh ;转换个位数

add dh,dl ;十位数加个位数

mov al,dh ;设置出口参数

pop cx

ret

asctob endp

3.29 调用HTOASC子程序,显示一个字节的16进制数,后跟“H”的子程序。

解:

DIPASC proc ;入口参数:AL=要显示的一个16进制数

push cx

push dx

push ax

mov cl,4 ;转换高位

shr al,cl

call HTOASC

mov dl,al ;显示

mov ah,2

int 21h

pop ax ;转换低位

call HTOASC

mov dl,al ;显示

mov ah,2

int 21h

mov dl,’H’;显示一个字母“H”

mov ah,2

int 21h

pop dx

pop cx

ret

DIPASC endp

HTOASC proc ;将AL低4位表达的一位16进制数转换为ASCII码and al,0fh

cmp al,9

jbe htoasc1

add al,37h ;是0AH~0FH,加37H转换为ASCII码

ret ;子程序返回

htoasc1: add al,30h ;是0~9,加30H转换为ASCII码

ret ;子程序返回

HTOASC endp

3.30写一个子程序,根据入口参数AL=0、1、2,依次实现对大写字母转换成小写、小写转换成大写或大小字母互换。欲转换的字符串在string中,用0表示结束

解:

lucase proc

push bx

mov bx,offset string

cmp al,0

je case0

cmp al,1

jz case1

cmp al,2

jz case2

jmp done

case0: cmp byte ptr [bx],0

je done

cmp byte ptr [bx],’A’

jb next0

cmp byte ptr [bx],’Z’

ja next0

add byte ptr [bx],20h

next0: inc bx

jmp case0

case1: cmp byte ptr [bx],0

je done

cmp byte ptr [bx],’a’

jb next1

cmp byte ptr [bx],’z’

ja next1

sub byte ptr [bx],20h

next1: inc bx

jmp case1

case2: cmp byte ptr [bx],0

je done

cmp byte ptr [bx],’A’

jb next2

cmp byte ptr [bx],’Z’

ja next20

add byte ptr [bx],20h

jmp next2

next20: cmp byte ptr [bx],’a’

jb next2

cmp byte ptr [bx],’z’

ja next2

sub byte ptr [bx],20h

next2: inc bx

jmp case2

done: pop bx

ret

lucase endp

3.31子程序的参数传递有哪些方法?请简单比较

解:

(1)用寄存器传递参数:

最简单和常用的参数传递方法是通过寄存器,只要把参数存于约定的寄存器中就可以了由于通用寄存器个数有限,这种方法对少量数据可以直接传递数值,而对大量数据只能传递地址

采用寄存器传递参数,注意带有出口参数的寄存器不能保护和恢复,带有入口参数的寄存器可以保护、也可以不保护,但最好能够保持一致

(2)用共享变量传递参数

子程序和主程序使用同一个变量名存取数据就是利用共享变量(全局变量)进行参数传递

如果变量定义和使用不在同一个源程序中,需要利用PUBLIC、EXTREN声明

如果主程序还要利用原来的变量值,则需要保护和恢复

利用共享变量传递参数,子程序的通用性较差,但特别适合在多个程序段间、尤其在不同的程序模块间传递数据

(3)用堆栈传递参数

参数传递还可以通过堆栈这个临时存储区。主程序将入口参数压入堆栈,子程序从堆栈中取出参数;子程序将出口参数压入堆栈,主程序弹出堆栈取得它们

采用堆栈传递参数是程式化的,它是编译程序处理参数传递、以及汇编语言与高级语言混合编程时的常规方法

3.32采用堆栈传递参数的一般方法是什么?为什么应该特别注意堆栈平衡问题。

解:

方法:主程序将入口参数压入堆栈,子程序从堆栈中取出参数;子程序将出口参数压入堆栈,主程序弹出堆栈取得它们

注意:压栈与弹栈必须要一一对应。

3.33 编写一个求32位数据补码的子程序,通过寄存器传递入口参数

解:

方法1:

neg32 proc ;入口参数:DX.AX=32位有符号数

neg ax ;实现0-DX.AX功能

neg dx

sbb dx,0 ;这条指令也可以用dec dx代替

ret

neg32 endp ;出口参数:DX.AX=32位有符号数的补码

方法2:

neg32 proc ;入口参数:DX.AX=32位有符号数

not ax ;实现DX.AX求反加1

not dx

add ax,1

adc dx,0

ret

neg32 endp ;出口参数:DX.AX=32位有符号数的补码

3.34编写一个计算字节校验的子程序。所谓“校验和”是指不计进位的累加,常用语建厂信息的正确性。主程序提供入口参数,有数据个数和数据缓冲区的首地址。子程序回送求和结果这个出口参数。传递参数方法自定。

解:

;数据段

array db 12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90h ;数组

count equ $-array ;数组元素个数

result db ? ;校验和

;代码段

mov bx,offset array ;BX←数组的偏移地址

mov cx,count ;CX←数组的元素个数

call checksum ;调用求和过程

mov result,al ;处理出口参数

mov ax,4c00h

int 21h

;计算字节校验和的通用过程

;入口参数:DS:BX=数组的段地址:偏移地址,CX=元素个数

;出口参数:AL=校验和

;说明:除AX/BX/CX外,不影响其他寄存器

checksum proc

xor al,al ;累加器清0

sum: add al,[bx] ;求和

inc bx ;指向下一个字节

loop sum

ret

checksum endp

end

3.35编写3个子程序,把一个16位二进制数用4为16进制数在屏幕上显示出来,分别运用如下3中参数传递方法,并配合3个主程序验证它。

(1)采用AX寄存器传递这个16位二进制数。

(2)采用temp变量传递这个16位二进制数。

(3)采用堆栈方法传递这个16位二进制数。

解:

.model small

.stack

.data

wdata dw 34abh

.code

.startup

mov ax,wdata

call dispa

.exit 0

;

dispa proc

push cx

push dx

mov cl,4

mov dl,ah

shr dl,cl

call dldisp

mov dl,ah

and dl,0fh

call dldisp

mov dl,al

shr dl,cl

call dldisp

mov dl,al

and dl,0fh

call dldisp

pop dx

pop cx

ret

dispa endp

;

dldisp proc

push ax

or dl,30h

cmp dl,39h

jbe dldisp1

add dl,7

dldisp1: mov ah,2

int 21h

pop ax

ret

dldisp endp

end

.model small

.stack

.data

wdata dw 34abh

wordtemp dw ?

.code

.startup

mov ax,wdata

mov wordtemp,ax

call dispa

.exit 0

;

dispa proc

push cx

push dx

mov cl,4

mov dl,byte ptr wordtemp+1

shr dl,cl

call dldisp

mov dl,byte ptr wordtemp+1

and dl,0fh

call dldisp

mov dl,byte ptr wordtemp

shr dl,cl

call dldisp

mov dl,byte ptr wordtemp

and dl,0fh

call dldisp

pop dx

pop cx

ret

dispa endp

;

dldisp proc

push ax

or dl,30h

cmp dl,39h

jbe dldisp1

add dl,7

int 21h

pop ax

ret

dldisp endp

end

.model small

.stack

.data

wdata dw 34abh

.code

.startup

push wdata

call dispa

pop ax ;add sp,2

.exit 0

;

dispa proc

push bp

mov bp,sp

push ax

push cx

push dx

mov ax,[bp+4]

mov cl,4

mov dl,ah

shr dl,cl

call dldisp

mov dl,ah

and dl,0fh

call dldisp

mov dl,al

shr dl,cl

call dldisp

mov dl,al

and dl,0fh

call dldisp

pop dx

pop cx

pop ax

pop bp

ret

dispa endp

;

dldisp proc

push ax

or dl,30h

cmp dl,39h

jbe dldisp1

add dl,7

int 21h

pop ax

ret

dldisp endp

end

3.36什么情况需要使用PUBLIC和EXTERN伪指令?请将题3.20的子程序全部用于寄存器传递参数,写成子程序模块。

解:

如果利用共享变量传递函数,且变量定义和使用不在同一个源程序中,需要利用PUBLIC、EXTERN声明。

3.37宏是如何定义、调用和展开的?

解:

(1)宏定义由一对宏汇编伪指令MACRO和ENDM来完成,格式如下:

宏名MACRO [形参表]

……;宏定义体

ENDM

宏定义之后就可以使用它,即宏调用:

宏名 [实参表]

(2)宏调用的格式同一般指令一样:在使用宏指令的位置写下宏名,后跟实体参数;如果有多个参数,应按形参顺序填入实参,也用逗号分隔

(3)宏展开:在汇编时,宏指令被汇编程序用对应的代码序列替代,这就是宏展开宏展开的具体过程是:当汇编程序扫描源程序遇到已有定义的宏调用时,即用相应的宏定义体完全替代源程序的宏指令,同时用位置匹配的实参对形参进行取代

3.38宏参数有什么特点,宏定义的形参如何与宏调用的实参相结合?

解:

宏调用的参数通过形参、实参结合实现传递,简捷直观、灵活多变。宏汇编的一大特色是它的参数。宏定义时既可以无参数,也可以有一个或多个参数;宏调用时实参的形式也非常灵活,可以是常数、变量、存储单元、指令(操作码)或它们的一部分,也可以是表达式;只要宏展开后符合汇编语言的语法规则即可。

3.39说明宏汇编和子程序的本质区别,程序设计中如何选择?

解:

宏:仅是源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减小目标程序,执行速度没有改变

通过形参、实参结合实现参数传递,简捷直观、灵活多变

子程序:还是目标程序级的简化:子程序调用在执行时由CALL指令转向、RET指令返回;形成的目标代码较短,执行速度减慢

需要利用寄存器、存储单元或堆栈等传递参数

选择:宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法。通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序

3.40编写一个宏指令move doprnd,soprnd,它实现任意寻址方式的字量源操作数soprnd 送到目的操作数doprnd,包括存储单元到存储单元的传送功能。

答:

move macro doprnd,soprnd

mov ax,soprnd

mov doprnd,ax

endm

3.41定义一个宏logical,用它代表4条逻辑运算指令:and/or/xor/test。注意需要利

用3个形式参数,并给出一个宏调用以及对应宏展开的例子。

答:

logical macro lcode,dopd,sopd

lcode dopd,sopd

endm

例如,如果使用“and ax,[bx]”指令,可以利用该宏定义,写出宏指令如下:

logical and,ax,[bx]

3.42写一个宏,判断AL寄存器中的ASCⅡ码是否为大写字母,如果是大写字母就转换为

小写字母,否则不转换。

解:

utol macro

local next

cmp al,’A’;小于“A”不转换

jb next

cmp al,’Z’;大于“A”不转换

ja next

add al,20h ;是大写字母则转换为小写字母

next:

endm

3.43定义一个宏movestr strn,dstr,sstr,它将strn个字符从一个字符区sstr传送到

另一个字符区dstr。

解:(假设它们都在数据段)

movestr macro strn,dstr,sstr

mov cx,ds

mov es,cx

mov cx,strn

mov di,offset dstr

mov si,offset sstr

cld

rep movsb ;;重复传送ES:[DI]←DS:[SI] endm

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

第二章 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位地址空间进行访问,就需要两部分地址

《汇编语言与接口技术》答案习题解答(第三章)

解: mov ah,1 ;只允许输入小写字母 int 21h sub al,20h ;转换为大写字母 mov dl,al mov ah,2 int 21h ;显示 解: mov ax, bufX cmp ax, bufY jge done mov ax, bufY done: mov bufZ, ax 解:

.model small .stack .data bufX dw -7 signX db .code .startup cmp bufX,0 ;test bufX,80h jl next ;jnz next mov signX,0 jmp done next: mov signX,-1 done: .exit 0 end 解: mov dl,’2’ mov ax,bufX cmp ax,bufY je next1 dec dl next1: cmp ax,bufZ je next2 dec dl next2: mov ah,2 int 21h

编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H等10个字节数据之和,并将结果存入字节变量SUM中(不考虑溢出和进位)。 ; .model small .stack .data b_data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h ;原始数据num equ 10 ;数据个数 sum db ;预留结果单元 .code .startup xor si, si ;位移量清零 xor al, al ;取第一个数 mov cx, num ;累加次数 again: add al, b_data[si] ;累加 inc si ;指向下一个数 loop again ;如未完,继续累加 mov sum, al ;完了,存结果 .exit 0 end 解: lucase proc push bx mov bx,offset string cmp al,0 je case0 cmp al,1

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

范文范例学习指导 第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、熟悉汇编程序调试过程 2、掌握算术运算指令运用 3、掌握分支程序的编程和调试方法 二、实验设备 80X86微型计算机 三、实验内容 1、编程并调试显示“Hello Word!”字符串的汇编程序 TITLE HELLO DA TA SEGMENT STR DB'Hello World!$' DA TA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET STR MOV AH,9H INT 21H MOV AH,4CH INT 21H CODE ENDS END START

2、A、B、C、D、W是互不相等的在数据段中定义的16位有符号数,并假设加减运算不产生溢出。编写一个完整段定义的汇编语言程序,计算W=(A+B)×(C—D)。 title asmprogram1_1 DA TA SEGMENT A DW 1H B DW 3H C DW 4H D DW 2H W DW 2 DUP(?) DA TA ENDS ; CODE SEGMENT ASSUME DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX MOV AX,A ADD AX,B MOV BX,C SUB BX,D IMUL BX MOV W,AX MOV W+2,DX MOV AH,4CH INT 21H CODE ENDS END START

3、设X、Y为在数据段中定义的有符号字变量。编写一个完整段定义的汇编语言程序(包含必要的伪指令,给出必要的注释)完成以下操作:若0

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

习题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

《汇编语言与接口技术》期末考试试题及答案

第一学期期末考试 汇编语言与接口技术 试卷A 卷 考试方式:闭卷 考试时间:120分钟 卷面总分:100分 一、选择题(本题共20小题,每题2分,共40分) 1. 汇编源程序的后缀名是 ( C ) A 、exe B 、.obj C 、.asm D 、.lib 2. 作为8位有符号数补码,80H 的真值是 ( C ) A 、0 B 、-2 C 、-128 D 、128 3. 8086 CPU 内部能够记录代码段段地址的寄存器是 ( D ) A 、DS B 、IP C 、CX D 、CS 4. 若(AX)=35F0H ,(CX)=00B8H ,当AND AX ,CX 指令执行后,AX 寄存器的值为 ( B ) A 、 1400H B 、 00B0H C 、 0000H D 、 0FFFFH 5. 若(SP)=1000H ,则执行指令PUSH AX 后SP 的值为 ( B ) A 、0FFFH B 、0FFEH C 、1002H D 、1001H 6. Mul BX 指令隐藏操作数的寄存器是 ( D ) A 、BX B 、CX C 、SI D 、AX

7.能够将AL中的1、3、5位取反的指令是 ( C ) A、AND AL , 2AH B、OR AL , 2AH C、XOR AL , 2AH D、TEST AL , 2AH 8.循环指令LOOP结束循环的条件是 ( D ) A、CX≠0 B、ZF=0 C、IF=0 D、CX=0 9.除法指令DIV BL中,被除数在寄存器 ( A ) A、AX B、DX C、DX:AX D、BX 10.输出单个字符的2号DOS功能调用的入口参数是 ( C ) A、AH B、AL C、DL D、DH 11.以下对伪指令的描述正确的是 ( D ) A、伪指令没有操作数 B、伪指令没有目标代码 C、汇编程序中伪指令可有可无 D、伪指令不会被执行 12.某伪指令X=12H中所定义的X是 ( B ) A、变量 B、常量 C、标号 D、段名 13.下面指令序列执行后完成的运算,正确的算术表达式应是( D ) MOV AL,BYTE PTR X SHL AL,1 DEC AL MOV BYTE PTR Y,AL A、Y=X*2+1 B、X=Y*2+1 C、X=Y*2-1 D、Y=X*2-1 14.下面指令结束后目标操作数不变化的是 (D ) A、INC BX B、SUB AX,BX

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

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

位微机原理汇编语言及接口技术教程课后习题答案

《16/32位微机原理、汇编语言及接口技术教程》 部分习题参考解答 第1章微型计算机系统概述 〔习题〕 什么是通用微处理器、单片机(微控制器)、DSP芯片、嵌入式系统? 〔解答〕 通用微处理器:适合较广的应用领域的微处理器,例如装在PC机、笔记本电脑、工作站、服务器上的微处理器。 单片机:是指通常用于控制领域的微处理器芯片,其内部除CPU外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。 DSP芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,内部集成有高速乘法器,能够进行快速乘法和加法运算。 嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统,其典型的特点是把计算机直接嵌入到应用系统之中。 〔习题〕 说明微型计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:CPU也称处理器,是微机的核心。它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)。处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。 存储器:存储器是存放程序和数据的部件。 外部设备:外部设备是指可与微机进行交互的输入(Input)设备和输出(Output)设备,也称I/O设备。I/O设备通过I/O接口与主机连接。 总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。

〔习题〕 什么是总线?微机总线通常有哪3组信号?各组信号的作用是什么? 〔解答〕 总线:传递信息的共用通道,物理上是一组公用导线。 3组信号线:数据总线、地址总线和控制总线。 (1)地址总线:传输将要访问的主存单元或I/O端口的地址信息。 (2)数据总线:传输读写操作的数据信息。 (3)控制总线:协调系统中各部件的操作。 〔习题〕 简答如下概念: (1)计算机字长 (2)取指-译码-执行周期 (3)ROM-BIOS (4)中断 (5)ISA总线 〔解答〕 (1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。 (2)指令的处理过程,即指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。 (3)ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。 (4)中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。 (5)ISA总线是指IBM PC/AT机上使用的系统总线。 〔习题〕 下列十六进制数表示无符号整数,请转换为十进制形式的真值: (1)FFH (2)0H (3)5EH (4)EFH 〔解答〕 (1)255 (2)0 (3)94 (4)239

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

《微机原理与接口技术》参考答案 《微机原理与接口技术》习题参考答案习题 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)) 则

6/3位微机原理、汇编语言及接口技术__钱晓捷_版_课后习题答案639

第一章 1.1解: 五代,详细见书 1.2解: 微型计算机:以大规模、超大规模集成电路为主要部件,以集成了计算机主要部件一一控制器和运算器的微处理器为核心,所构造出的计算机系统。 PC机:PC

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

微机原理与接口技术期末考试题库 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

汇编语言与接口技术 习题解答

习题一解答: 1.3(1)[0.0000]原=0.0000 [0.0000]反=0.0000 [0.0000]补=0.0000 (2)[0.1001]原=0.1001 [0.1001]反=0.1001 [0.1001]补=0.1001 (3)[-1001]原=11001 [-1001]反=10110 [-1001]补=10111 1.4[N]反=1.0101 [N]原=1.1010 [N]补=1.0110 N=-0.1010 1.5(1)原码运算:比较可知,正数较大,用正数减负数,结果为正 反码运算:01010011-00110011=[01010011]反+[-00110011]反=001010011 +[100110011]反=001010011+111001100=000100000 补码运算:01010011-00110011=[01010011]补+[-00110011]补=001010011 +[100110011]补=001010011+111001101=000100000 (2)原码运算:比较可知,负数较大,用负数减正数,结果为负 反码运算:0.100100-0.110010=0.100100+[1.110010]反=0.100100+ 1.001101=1.110001 补码运算:0.100100-0.110010=0.100100+[1.110010]补=0.100100+ 1.001110=1.110010 1.6(1) (11011011)2=(219)10=(001000011001)BCD (2) (456)10=(010*********)BCD (3) (174)8=(124)10=(000100100100)BCD (4) (2DA)16=(730)10=(011100110000)BCD 1.7(1)9876H看成有符号数时,默认为负数的补码,转换为十进制数是:-26506 (2)9876H看成无符号数时,转换为十进制数是:39030 1.8(1)98的压缩BCD码为:10011000B (2)98的非压缩BCD码为:0000100100001000B

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

《微机原理与接口技术》复习参考资料 第一章概述 一、计算机中的数制 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.汇编语言常用的名词术语 指令代码指令机器指令程序汇编指令汇编语言汇编程序汇编语言源程序 汇编反汇编偏移地址 (有效地址物理地址过程循环标号变量名的属性 2.常用数制二进制八进制十进制十六进制补码的表示 BCD码的表示 3.寄存器:名称种类及应用(32位、16位 4.寻址方式寻址方式种类(32位、16位操作数类型存储器操作数的存放规则 5.源程序的书写格式及正常结束 6.指令系统:操作数搭配的7个规则 7.常用伪指令 一1.Mov Ax , Bx→经过汇编后变成机器代码指令机器代码指令经过反汇编后→Mov Ax, Bx .如何用16位的地址访问期间1M空间 DS*10H + EA→实际地址 段地址有效地址 Data Segment A DB…….

OFFSET A 是相对Data的偏移地址 B Proc ret B Endp .用MACRO/ENDM括起一段程序____宏定义 在用到的地方写上宏名____宏调用 如: A MACRO B Proc ENDM B Endp 汇编时,宏定义体占用内存空间多,运算快. 而CALL节省空间,占用时间多 因为CALL B之前把下一条指令的有效地址入栈,再转去执行B,执行完又把断点出栈,继续执行主程序.所以花时间,速度慢. 2.二进制八进制十进制十六进制的相互转换. 3.寄存器分为三大类:通用寄存器、段寄存器控制寄存器 Flag....... 4. 7种寻址方式:种类;立即数、寄存器寻址不需要访问内存, 变量名是访问内存;熟练掌握常用寻址方式。 一.1. 汇编指令(如下所示 标号: 操作码数据1,数据2;注释

微机原理与接口技术

微机原理及接口技术 第一部分客观题 一、单项选择题(每小题2分,共10分) 1. 寄存器ECX勺低16位部分可以用 ____________ 达。 A EX B CX C CH D CL 2. 8086处理器执行“ OUT DX,AL指令时,AL的数据出现在_____________ 输出给外设。 A控制总线B地址总线C电源和地线D 数据总线 3. 与DRAM目比,SRAM勺特点是___________ 。 A集成度高、存取周期长B集成度低、存取周期长 C集成度高、存取周期短D集成度低、存取周期短 4. 使用语句“ var dword 3721 ”定义的变量var在主存占用___________ 字节存储空间。 A 1 B 2 C 4 D 8 5. 用8K>8结构SRAM芯片构成64000H H6FFFFH地址范围的存储器,需要使用__________ 。 A 4 B 6 C 8 D 10 二、对错判断题(每小题2分,共10分)(说明:正确的选“ A ,错误选“ B” 6. IA-32 处理器设置的中断标志IF = 0是关中断,表示禁止内部中断和外部中断的所有中断请求。X

7. 已知var是一个变量,语句“ add esi,byte ptr var ”没有语法错误。X 8. DMA传输由DMA控制器控制,无需处理器执行I/O指令。V 9. 高性能计算机中常使用Cache (高速缓冲存储器)提高主存性能。V 10. 向某个I/O端口写入一个数据,一定可以从该I/O端口读回这个数据。V 第二部分主观题 一、填空题(每空2分,共10分) 1. 8086处理器引脚有3个最基本的读写控制信号,它们是M/IO*,—RD* __________ 和____ /R* ______ 。 2. 逻辑地址由—段基地址_________ 口偏移地址两部分组成。代码段中下一条要执行的指令由CS和 _____ 指针IP ____ 寄存器指示,后者在实地址模型中起作用 的仅有_____ 指针 ____ 寄存器部分。 二、问答题(每小题6分,共30分) 1. 什么是JMP指令的近(near)转移和远(far )转移? jmp指令的近转移是指在同一个段里面的转移,也叫做段内近转移,用汇编编码就是这样的jmp near ptr标号 jmp指令的远转移是指段与段之间的转移,就是说不在同一个段的转移,用汇编编码就是这样的jmp far ptr 标号 2. 什么是存储访问的局部性原理,它分成哪两个方面的局部性? 程序局部性原理:虚拟存储管理的效率与程序局部性程序有很大关系。根据统计,进程运行时,在一段时间内,其程序的执行往往呈现岀高度的局限性,包括时间局部性和空间局部性。 1、时间局部性:是指若一条指令被执行,则在不久的将来,它可能再被执行。 2、空间局部性:是指一旦一个存储单元被访问,那它附近的单元也将很快被访问。

相关文档
最新文档