文档库 最新最全的文档下载
当前位置:文档库 › 1632位微机原理、汇编语言及接口技术第2版-习题答案

1632位微机原理、汇编语言及接口技术第2版-习题答案

1632位微机原理、汇编语言及接口技术第2版-习题答案
1632位微机原理、汇编语言及接口技术第2版-习题答案

阿第一章

1.1 解:

五代,详细见书

1.2 解:

微型计算机:以大规模、超大规模集成电路为主要部件,以集成了计算机主要部件——控制器和运算器的微处理器为核心,所构造出的计算机系统。

PC机:PC(Personal Computer)机就是面向个人单独使用的一类微机。

单片机:用于控制的微处理器芯片,内部除CPU外还集成了计算机的其他一些主要部件,如:ROM、RAM、定时器、并行接口、串行接口,有的芯片还集成了A/D、D/A转换电路等。

数字信号处理器DSP:主要面向大流量数字信号的实时处理,在宿主系统中充当数据处理中心,在网络通信、多媒体应用等领域正得到越来越多的应用

1.3 解:

微机主要有存储器、I/O设备和I/O接口、CPU、系统总线、操作系统和应用软件组成,各部分功能如下:

CPU:统一协调和控制系统中的各个部件

系统总线:传送信息

存储器:存放程序和数据

I/O设备:实现微机的输入输出功能

I/O接口:I/O设备与CPU的桥梁

操作系统:管理系统所有的软硬件资源

1.4 解:

系统总线:传递信息的一组公用导线,CPU通过它们与存储器和I/O设备进行信息交换。

好处:组态灵活、扩展方便

三组信号线:数据总线、地址总线和控制总线。

其使用特点是:在某一时刻,只能由一个总线主控设备来控制系统总线,只能有一个发送者向总线发送信号;但可以有多个设备从总线上同时获得信号。

1.5解:

(1)用于数值计算、数据处理及信息管理方向。采用通用微机,要求有较快的工作速度、较高的运算精度、较大的内存容量和较完备的输入输出设备,为用户提供方便友好的操作界面和简便快捷的维护、扩充手段。

(2)用于过程控制及嵌人应用方向。

采用控制类微机,要求能抵抗各种干扰、适应现场的恶劣环境、确保长时间稳定地工作,要求其实时性要好、强调其体积要小、便携式应用强调其省电。

1.6 解:

1.7 解:

I/O通道:位于CPU和设备控制器之间,其目的是承担一些原来由CPU处理的I/O任务,从而把CPU从繁杂的I/O任务中解脱出来。由10根信号线组成(A9-A0)。

1.8解:

BIOS:基本输入输出系统。

主要功能:用来驱动和管理诸如键盘、显示器、打印机、磁盘、时钟、串行通信接口等基本的输入输出设备

1.9 解:

基本RAM区:640KB

保留RAM区:128KB

扩展ROM区:128KB

基本ROM区:128KB

1.10 解:

(1)、数—用来直接表征量的大小,包括:定点数、浮点数。

(2)、码—用来指代某个事物或事物的某种状态属性,包括:二进制、八进制、十进制、十六进制。

区别:使用场合不同,详见P16.

1.11 解:

(1)

1021016

174.66)(10101110.10101)174.66)(.8)AE A ==((

(2)

210216

100011101011.01011)(2283.34375)100011101011.01011)(8.58)EB ==((

(3)

1621610

F18A 6.6)(11110001100010100110.0110)F18A 6.6)(989350.375)==((

1.12 解: 原码 反码 补码 +37 00100101/25H 00100101/25H 00100101/25H -37 10100101/A5H 11011010/DAH 11011011/DBH

1.13

1.14 解: 无符号数:70D 补码有符号数:70D BCD 码:46D ASCII:F

1.15 解: 1)、相加后若出现和大于9,则将和减去10后再向高位进1 2)、若出现组间进位,则将低位加6

1.16 解: 详见课本16页。

1.17 解: C3 40 20 00

1.19 解:

D:44H

d:64H

CR:0DH

LF:0AH

0:30H

SP:20H

NUL:00H

1.20 解:

国标码:36 50H

机内码:B6 B0H

第二章

2.1

算术逻辑单元ALU、寄存器组和控制器;

总线接口单元BIU:管理8088与系统总线的接口负责cpu对接口和外设进行访问

执行单元EU:负责指令译码、执行和数据运算;

8位cpu在指令译码前必须等待取指令操作的完成,8088中需要译码的指令已经取到了指令队列,不需要等待取指令。而取指令是cpu最为频繁的操作,因此8088的结构和操作方式节省了大量等待时间,比8位cpu节省了时间,提高了性能。

2.2

8个8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL;

8个16位寄存器:累加器AX、基址寄存器BX、计数器CX、数据寄存器DX、源地址寄存器SI、目的地址寄存器DI、基址指针BP、堆栈指针SP。

2.3

标志用于反映指令执行结果或者控制指令执行形式。

状态标志用于记录程序运行结果的状态信息;控制标志用于控制指令执行的形式。

2.4

例:有运算:3AH+7CH=B6H

作为无符号数运算,没有进位,CF=0;

作为有符号数运算,结果超出范围,OF=1.

2.5

8088中每个存储单元有唯一的20位地址,称为物理地址。处理器通过总线存取存储器数据时,采用这个物理地址。

在用户编程过程中采用的“段地址:偏移地址”的形式称为逻辑地址。

将逻辑地址中的段地址左移4位,加上偏移地址就得到物理地址。

1MB最多能分成65536个逻辑段。

2.6

代码段:存放程序的指令序列;

堆栈段:确定堆栈所在的主存储区;

数据段:存放当前运行程序的数据;

附加段:附加数据段,用于数据保存。另外串操作指令将其作为目的操作数的存放区。2.7

8088的存储空间分段管理,程序设计时采用逻辑地址。由于段地址在默认的或指定的段寄存器中,所以只需要偏移地址,称为有效地址EA.

操作数在主存中有以下几种寻址方式:直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址。

2.8

(1)立即数寻址ax:1200H

(2)寄存器寻址ax:0100H

(3)存储器直接寻址ax:4C2AH

(4)寄存器间接寻址ax:3412H

(5)寄存器间接寻址ax:4C2AH

(6)基址变址寻址ax:7856H

(7)相对基址变址寻址ax:65B7H

2.9

(1)cx为字寄存器,dl为字节寄存器,类型不匹配。

(2)mov指令的目的操作数只能是寄存器或者主存单元,ip是指针。

(3)不允许立即数到段寄存器的传送。

(4)不允许段寄存器之间的直接传送。

(5)数据溢出。

(6)sp不能用于寄存器间接寻址。

(7)格式不对。应为:mov ax,[bx+di]

(8)mov指令的操作数不能是立即数。

2.10

(1)bx得到table的偏移地址,bx=200H.

(2)将立即数8送到al。

(3)换码,al=12H.

2.11

(1)al=89H

(2)al=12H,cf=1,zf=0,sf=0,of=1,pf=1

(3)al=0AFH,cf=0,zf=0,sf=1,of=0,pf=1

(4)al=0AFH,cf=1,zf=0,sf=1,of=1,pf=1

(5)al=0,cf=0,zf=1,sf=0,of=0,pf=1

(6)al=0FFH,cf=0,zf=0,sf=1,of=0,pf=1

(7)al=0,cf=0,zf=1,sf=0,of=0,pf=1

2.12

(1) add dx,bx

(2) add al,[bx+si]

(3) add word ptr[bx+0B2H],cx

(4) add word ptr[0520H],3412H

(5)add al,0A0H

2.13

运算公式:X

(+

-

*

-。商存储在ax,余数存储在dx。

Y

540

Z

X

V/)

2.14

(1)ax=1470H

(2)ax=1470H,cf=0,of=0,sf=0,zf=0,pf=0

(3)ax=1470H,cf=0,of=0,sf=0,zf=0,pf=0

(4)ax=0,cf=0,of=0,sf=0,zf=1,pf=1

(5)ax=0FFFFH,cf=0,of=0,sf=0,zf=1,pf=1

(6)ax=0FFFFH,cf=0,of=0,sf=1,zf=0,pf=1

2.15

相对寻址方式、直接寻址方式、间接寻址方式。

2.16

(1)1256H

(2)3280H

2.17

(1)ax=1E1EH

(2)al的D0、D7位不全为0

(3)cx<64H

2.18

执行65536次。

2.19

功能:将数组中每个字元素相加,结果存储于total。

2.20

(1)lea si,string

Mov dh,[si]

Mov dl,[si+5]

(2)mov ax word ptr buffer1

Sub ax word ptr buffer2

Mov dx word ptr buffer1+2

Sbb dx word ptr buffer2+2

(3)test dx,0F000H

jz even

even: mov ax,0

(4)mov cx,4

again: sar dx,1

rcr ax,1

loop again

(5)mov cx,100

mov si,0

again: mov al,0FFH

add al,array[si]

mov array[si],al

inc si

loop again

2.21

Htoasc proc

Mov bl,al

Mov al,ah

Mov bh,10

Mul bh

And ax,00FFH

Add al,bl

Htoend: ret

Htoasc endp

2.22

计算机系统利用中断为用户提供硬件设备驱动程序。在IBM-PC系列微机中,基本输入输出系统ROM-BIOS和DOS都提供了丰富的中断服务程序,称为系统功能调用。

调用步骤(1)AH中设置系统功能调用号

(2)在指定寄存器中设置入口参数

(3)使用中断调用指令执行功能调用

(4)根据出口参数分析调用情况

2.23

Htoasc proc

And al,0FH

Add al,90H

Daa

Adc al,40H

Daa

Mov ah,02H

Mov dl,al

Int 21H

Ret

Htoasc endp

2.24

Numout proc

Xor ah,ah

Aam

Add ax,3030H

Mov dl,ah

Mov ah,02H

Int 21H

Mov dl,al

Mov ah,02H

Int 31H

Ret

Numout endp

2.25

Msgkey db”input number 0-9”,”$”Msgwrg db”error”,”$”

Mov ah,09H

Mov dx,offset msgkey

Int 21H

Again: mov ah,01H

Int 21H

Cmp al,30H

Jb disp

Cmp al,39H

Ja disp

Mov dl,al

Mov ah,02H

Int 21H

Jmp done

Disp: mov dx,offset msgwrg

Mov ah,09H

Int 21H

Jmp again

Done: mov ah,02H

Mov dl,al

Int 21H

第3章

3.1 解:

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

3.2 解:

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

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

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

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

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

3.3 解:

3.4 解:

开始位置:用标号指明

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

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

3.5 解:

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

3.6 解:

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.7 解:

(1). EXE程序

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

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

(2). COM程序

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

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

3.8 解:

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

符号名 EQU 数值表达式

符号名 EQU <字符串>

符号名=数值表达式

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

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

3.9 解:

(1) al=67h

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

(3) ax=0230h

(4) al=41h

(4) ax=7654h

3.10 解:

3.11 解:.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 解:

;数据段

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 解:

(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 解:

mov bx,offset LEDtable

mov al,lednum

xlat

3.18 解:

mov ax, bufX

cmp ax, bufY

jae done

mov ax, bufY

done: mov bufZ, ax

3.19 解:

.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.20 解:

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 解:

;代码段

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 解:

(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 解(不需调用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 解答:

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 解:

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 解:

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 解:

方法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 解:

.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

汇编语言程序设计练习题

汇编语言程序设计练习题 一、字符与串处理类 1.逆序输出字符串“BASED ADDRESSING”。 2.试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来。 3.编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 4.从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。 5.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。)放在STRING中,试编制一个程序测试字符串中是否存在数字。如有,则把CL的第5位置1,否则将该位置置0。 6.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。),将其中的小写英文字母变换为大写英文字母,其他字符保持不变。然后将变换后的字符串显示出来。 7.试编制一个程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不是,则退出程序;如是,则开始接收键入的字符并顺序存放在首地址为buffer的缓冲区中(空格符不存入),直到接收到第二个空格符时退出程序。 8.试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”, 若不相同则显示“NO MATCH”。 9.试编写一段程序,要求输入两个字符串,如两个字符串相等则显示“MATCH”, 否则显示“NO MATCH”。 10.试编写一段程序,要求在长度为100H字节的数组中,找出大于61H的无符号数的个数并存入字节单元UP中,找出小于2FH的无符号数的个数并存入字节单元DOWN中。 11.在内存区域0B800:0000-0B800:0FFFF(都是16进制数)内查找首地址为SOURCE的串(SOURCE的首字节为串长度),如果找到,则把AL的第0位置0,否则将该位置置1。 12.已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一个程序,把既在A中又在B中出现的整数存放于数组C中。 13.在附加段中,有一个首地址为LIST和未经排序的字数组。在数组的第一个字中,存放着该数组的长度,数组的首地址已存放在DI寄存器中,AX寄存器中存放着一个数。要求编制一个程序:在数组中查找该数,如果找到此数,则把它从数组中删除。 二、数字输入输出类 1. 试编制一个程序,把BX寄存器内的二进制数以十六进制数的形式在屏幕上显示出来。 2. 试编制一个程序,把BX寄存器内的二进制数以八进制数的形式在屏幕上显示出来。 3. 试编制一个程序,把BX寄存器内的二进制数以十进制数的形式在屏幕上显示出来。 4.从键盘上输入2个一位数,求出它们的和(假设和不超过1位)。 5.试编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。 6.试编写一段程序,从键盘接收一个0-65535间的十进制无符号数,并在终端上显示与它等值的二进制数。 7.试编写一段程序,从键盘接收一个-32768-32767间的十进制有符号数,并在终端上显示与它等值的二进制数。 8.编写一个程序,从键盘输入一个0~65535之间的10进制无符号数,然后以16进制

汇编语言试题及参考答案

汇编语言试题及参考答案 一,填空题 1.ZF标志位是标志结果是否为零的,若结果,ZF为( 1 ),否则ZF为( 0 ).当ZF为1时,SF为( 0 ) 2.标号可以有两种类型属性.它们是( )和( ) 3.8位无符号整数的表示范围为0--255,写成16进制形式为( ),8位有符号整数的表示范围为-128--+127,写成16进制形式为( ) 4.伪指令DB,GROUP 和NAME 三个标号名字域必须有名字的是( ),不得有名字的是( ),可有可无名字的是( ). 5.循环程序通常由( )( )( )和循环结果外理四部分构成 6.在数值不达式中,各种运算符可可混合使用,其优先次序规则*,/( )于+,-;XOR,OR( )于AND,LT( )于GT 7. 宏指令定义必须由伪指令( )开始,伪指令( )结束,两者之间的语句称为( ) 8.调用程序与子程序之间的参数传递方法有四种,即堆栈法( )( )( ) 9.分别用一条语句实现下述指明的功能 (1)栈顶内容弹出送字变量AYW( ) (2)双字变量AYD存放的地址指针送ES和SI( ) (3)变量AY2类型属性送AH( ) (4)不允许中断即关中断( ) (5)将字符串'HOW ARE YOU!'存入变量AYB( ) (6)子程序返回调用程序( ) (7)地址表达式AYY[4]的偏移地址送字变量ADDR( ) (8)AX的内容加1,要求不影响CF( ) (9)BX的内容加1,要求影响所有标志位( ) (10)若操作结果为零转向短号GOON( ) 二,单选题 1.IBM PC微机中,有符号数是用( )表示的 1.原码 2.补码 3.反码 4.BCD码 2.把汇编源程序变成代码程序的过程是( ) 1.编译 2.汇编 3.编辑 4.链接

单片机习题集(含答案)经典

单片机原理及应用习题 第一章绪论 1-1单项选择 1、计算机中最常用的字符信息编码是()。 (A)ASCII (B)BCD码(C)余3码(D)循环码 2、-31D的二进制补码为.( )。 (A)1110000B (B)11100001B (C)01100000B (D)01100001B 3、十进制29的二进制表示为原码()。 (A)11100010B (B) 10101111B (C)00011101B (D)00001111B 4、十进制0.625转换成二进制数是()。 (A)0.101 (B) 0.111 (C)0.110 (D)0.100 5、十六进制数7的ASCII码是()。 (A) 37 (B) 7 (C) 07 (D) 47 6、十六进制数B的ASCII码是()。 (A) 38 (B) 42 (C) 11 (D) 1011 7、通常所说的主机是指() (A)运算器和控制器(B)CPU和磁盘存储器(C)CPU和主存储器(D)硬件和软件 8、使用单片机实现在线控制的好处不包括( ) (A)精确度高(B)速度快(C)成本低(D)能与数据处理结合 1-2填空 1、计算机中常作的码制有、和。 2、十进制29的二进制表示为。 3、十进制数-29的8位补码表示为。 4、是计算机与外部世界交换信息的载体。 5、十进制数-47用8位二进制补码表示为。 6、-49D的二进制补码为。 7、计算机中的数称为,它的实际值叫。 8、单片机的存储器结构形式有普林斯顿结构(又称冯.依诺曼结构)与哈佛结构,MCS-51存储器采用的是结构。

1-3 问答题 1、何谓单片机?单片机与一般微型计算机相比,具有哪些特点? 2、单片机主要应用在哪些领域? 3、为什么80C51系列单片机能成为8位单片机应用主流? 4、举例说明单片机的主要应用领域。 5、二进制数、十进制数、十六进制数各用什么字母尾缀作为标识符?无标识符时表示什么进制数? 6、试比较MCS-51,MSP430,EM78,PIC,M6800及AVP等系列单片机的特点。 第二章 MCS-51单片机的硬件结构与工作原理 2-1 单项选择 1、要MCS-51系统中,若晶振频率屡6MHz,一个机器周期等于( ) μs A 1 B 2 C 3 D 0.5 2、以下不是构成的控制器部件(): A 程序计数器、 B指令寄存器、 C指令译码器、 D存储器 3、以下不是构成单片机的部件() A 微处理器(CPU)、B存储器 C接口适配器(I\O接口电路) D 打印机 4、下列不是单片机总线是() A 地址总线 B 控制总线 C 数据总线 D 输出总线 5、PSW=18H时,则当前工作寄存器是() (A)0组(B)1组(C)2组(D)3组 6、P1口的每一位能驱动() (A)2个TTL低电平负载有(B)4个TTL低电平负载 (C)8个TTL低电平负载有(D)10个TTL低电平负载 7、MCS-51的中断允许触发器内容为82H,CPU将响应的中断请求是( ) (A) T0, (B)T1 (C)串行接口 (D) INT0 8、外部中断0的中断入口地址为() (A)0003H (B)000BH (C)0013H (D)001BH 9、内部定时/计数器T0的中断入口地址为() (A)0003H (B)000BH (C)0013H (D)001BH 10、在中断服务程序中,至少应有一条( )

汇编程序习题

汇编程序习题 1.试分析以下程序段完成什么功能? MOV CL,4 SHL DX,CL SHL AX,CL SHR BL,CL INT 3 2.写出执行以下计算的指令序列: 1)Z←W+(Z-X)2)Z←W-(X+6)-(R+10) 3)Z←(W*X)/(R+6)4)Z←((W-X)/5*Y)*2 3.求两个数56H和67H进行ADD,并求出标志OF,CF,SF,ZF的值。4.阅读程序段,回答下述问题: 1)MOV AX,4000H 2)MOV AX,5678H 3)MOV AX,1234H OV DS,AX MOV BX,99AAH MOV CX,8912H MOV BX,1238H PUSH BX CMP AX,CX MOV〔BX〕,2244H PUSH AX INT 3 MOV AL,〔BX〕 POP DX SF=?OF=?JA成立否? INT 3 POP CX AL=?存储器的物理地址=?DX=?CX=? 5.下列程序能完成什么功能? DATY1 DB 300DUP(?) DATY2 DB 100DUP(?) …… MOV CX,100 MOV BX,200 MOV SI,0 MOV DI,0 NEXT:MOV AL,DATY1〔BX〕〔SI〕 MOV DATY2〔DI〕,AL

INC SI INC DI LOOP NEXT 6.下列指令哪些是错误的?并简述之。 1)MOV 15,BX 2)CMP OP1,OP2(假定OP1,OP2是用DB定义的变量) 3)CMP AX,OP1 4)CMP OP1,25H 5)MOV DS,CS 7.下列程序段执行后,BX的值是什么? MOV CL,3 MOV BX,0B8H ROL BX,1 ROR BX,CL 8.编写一个程序段,将内存200H单元开始的256个单元的内容,取绝对值后传送到400H开始的256个单元中。 9.求出下列各数与62A0H之和,并根据结果确定SF,ZF,CF,OF的值。 1)1234H 2)4321H 3)CFA0H 4)9D60H 10.求出下列各数与4AE0H之差,并根据结果确定SF,ZF,CF,OF的值。 1)1234H 2)5D80H 3)9090H 4)EA04H

微机原理与汇编语言复习题及参考答案

微机原理与汇编语言复习题及参考答案 ——CSDN下载频道提供,请尊重原创 一、选择题: 1. 设AL=0A8H,CX=2,CF=1,执行RCL AL,CL指令后,AL中的值为() A. 51H B. A3H C. 47H D. 0C5H 2. 下述指令的执行结果是() MOV AL,0C2H AND AL,0F0H A.AL=40H B.AL=20H C.AL=0C0H D.AL=0E0H 3. 完成对CL寄存器的容乘以4的正确操作是() A.ROL CL,1 B.MUL 4 C.SHL CL,1 D.MOV CL,2 ROL CL,1 SHL CL,1 SHL CL,CL 4. 无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指() A. ADD BH,01H B. OR BH,01H C. XOR BH,01H D. TEST BH,01H 5. 假设(AL)= 37H,(BL)= 95H,执行指令IMUL BL后(AX)= () A. 0E903H B. 2003H C. 0DBBH D. 2008H 6. 下面的数据传送指令中,错误的操作是() A. MOV SS:[BX+DI],1000H B. MOV DX,1000H C. MOV WORD PTR[BX],1000H D. MOV DS,2000H 7. CPU要访问的某一存储单元的实际地址称() A.段地址B.偏移地址C.物理地址D.逻辑地址 8. 某存储单元的物理地址是12345H,可以作为它的段地址有() A.2345H B.12345H C.12340H D.1234H 9. 计算机能直接识别的的语言() A.汇编语言 B.机器语言C.高级语言D.低级语言 10. 下列指令中操作数在代码段中的是() A.MOV AL,25H B.ADD AH,BL C.INC DS:[25] D.CMP AL,BL 11.直接、间接、立即三种寻址方式指令的执行速度,由决至慢的排序为()A.直接、立即、间接B.直接、间接、立即 C.立即、直接、间接D.不一定 12.若栈顶的物理地址是2010011,当执行完指令CALL AX后,栈顶的物理地址是()A.2010211 B.2010111 C.200FFH D.200FEH 13.当执行完下列指令序列后,标志位CF和OF的值是() MOV AX,OC126H MOV BX,5AB7H SUB AX,BX A.0,0 B.0,1 C.1,0 D.1,1 14. JMP BX的目标地址偏移量是(D)。 A.SI的容B.SI所指向的存字单元之容 C.IP+SI的容D.IP+[SI] 15.指令MOV AX,10[BX]的源操作数的寻址方式是() A.基址寻址B.寄存器寻址MOV AX,BX C.变址寻址AX【BX+DI】(只能用BX,BP;SI和DI) D.寄存器相对寻址 16.指出下列哪个数据在汇编语言中是非法的。()

51汇编程序练习题1

单片机汇编程序设计练习 一、存储器之间的数据传送 1、编程实现将单片机内部RAM60H开始的连续32个单元置为FFH。 2、编程实现将内部RAM30H开始的连续16个数传送到内部RAM50H开始的连续单元中。 3、编程实现将单片机外部RAM2000H为首地址的数据块传送到单片机内部RAM30H开始的单元中,数据块的长度为32个字节。 4、编程实现将单片机内部RAM30H为首地址的数据块传送到外部RAM2000H 开始的单元中,数据块的长度存放于内部RAM的20H单元。 5、编程实现将单片机外部RAM2000H为首地址的数据块传送到单片机内部RAM30H开始的单元中,直到数据内容为0DH时停止传送。 6、编程实现将ROM1000H地址的内容传送到内部RAM的25H单元。 7、编程实现将ROM2000H开始的连续10个地址的内容传送到内部RAM的25H 开始的单元。 8、编程实现将ROM1000H开始的连续100个地址的内容传送到外部RAM2000H 开始的连续单元中。 二、查表程序设计 1、编写查表程序,要查表的数据存放在R7中,其范围为0~9。编程查其平方值,并存放于40H。 2、编写查表程序,要查表的数据存放在R7中,其范围为0~9。编程查其立方值,并存放于R6。 3、单片机外部ROM TAB1地址开始存放一组ASCII码表,试用查表方法,将R2的内容(范围为0~F)转换为与其对应 的ASCII码,并从P1口输出。 4、使用8051的P1口作为段控驱动共阳 LED数码管,硬件连接如图。 编程实现将8051 R7单元内容(在 00H-09H之间)显示在数码管上。00H-09H 的共阳字形代码如下表所示。 04H 05H 06H 07H 08H 09H

汇编语言复习题(附答案)

汇编语言复习题 注:蓝色标记的为答案,此答案仅供参考,大家自己做一下或看以一下,认为不对的地方,可以提出来一起讨论一下,另外看一下课后老师布置的相应作业。在此文档最后最后附有课 后四、六章的答案,大家抓紧时间复习哦! 一、选择题 1. 把要执行的程序与库文件连接起来形成可执行文件的系统程序是(B )。 A. 汇编程序 B. 连接程序 C. 机器语言程序 D.源代码程序 2. 在8088/8086的寄存器组中,CPU确定下一条指令的物理地址时需要用到的寄存器对是 (C )。 A..SS 和SP B.DS 和DI C.CS 和IP D.ES 和SI 3. 为了使主机访问外设方便起见,外设中的每个寄存器给予一个(C )。 A.物理地址 B. 逻辑地址 C. 端口地址 D. 段地址 4. MOV AX, 3064H,该指令中源操作数采用的寻址方式是(A )。 A.立即 B. 直接 C. 寄存器相对 D. 寄存器间接 5. 换码指令的助记符是(C )。 A. XCHG B. LEAS C.XLAT D. MOV 6. 如果A> B (A、B有符号数)发生转移,应选择的条件转移指令是(JGE )。 7. 下列符号中,可用作标识符的是(C )。 A.MOV B.AX C.MSG1 D.1ABC 8. X DB 10H DUP (1 , 2)内存变量定义语句拥有了( A )个字节的存储空间。 A.20D B.10D C.20H D.10H 9. 当DF=0时,执行串操作指令MOVSB变址寄存器SI、DI的值将(C )。 A.不变 B. 减1 C. 加1 D. 无法确定 10. 如下指令可将AX寄存器内容改变的是(A )。 A. AND AX , BX B . TEST AX , BX C. CMP AX , BX D . XCHG AX , AX 11.16位CPU支持的I/O 地址范围是(D )。 A. 0~0FFFFFH B. 0~0FFFFH C. 0~0FFFH D. 0~0FFH 12. MUL CL指令实现的功能是(A )。 A.无符号乘法:AX AL X CL B.有符号乘法:AX AL X CL C.无符号乘法:DX AL X CL D .有符号乘法:DX AL X CL 13. DOS系统功能调用(INT 21H )中,显示字符串的功能号是(D )。 A.01H B.02H C.08H D. 09H 14. 在16位CPU读取指令时,需要用到的寄存器对是(C )。 A.SS 和SP B.DS 和DI C.CS 和IP D.ES 和SI 15. 下列指令中,源操作数(既第2操作数)属于基址加变址寻址方式是(B )。 A.MOV AX,23H B. MOV AX,[BX+SI] C.SUB AX,[BX] D. ADD AX,BX 16. 有内存变量定义语句:VAR DW 10 DUP(1 , 2), 1234H, VAR的属性TYPE LENGTH和

微机原理 典型例题

[问题] 在MOV WORD PTR [0074H],55BBH指令的机器代码中,最后一个字节是 (难度系数:3) [选择答案] A. 00H B. 74H C. 55H D. BBH [正确答案] C [问题] 由于CPU内部的操作速度较快,而CPU访问一次主存所花的时间较长,因此机器周期通常用_____来规定 (难度系数:3) [选择答案] A. 主存中读取一个指令字的最短时间 B. 主存中读取一个数据字的最长时间 C. 主存中写入一个数据字的平均时间 D. 主存中取一个数据字的平均时间 [正确答案] A [问题] 程序控制类指令的功能是_____

(难度系数:3) [选择答案] A. 进行算术运算和逻辑运算 B. 进行主存与CPU之间的数据传送 C. 进行CPU和I/O设备之间的数据传送 D. 改变程序执行的顺序 [正确答案] D [问题] 虚拟存贮器的主要目的是_____ (难度系数:3) [选择答案] A. 提高主存贮器的存取速度 B. 扩大主存贮器的存贮空间,并能进行自动管理和调度 C. 提高外存贮器的存取速度 D. 扩大外存贮器的存贮空间 [正确答案] B [问题] 位操作类指令的功能是______ (难度系数:3) [选择答案] A. 对CPU内部通用寄存器或主存某一单元任一位进行状态检测(0或1) B. 对CPU内部通用寄存器或主存某一单元任一位进行状态强置(0或1)

C. 对CPU内部通用寄存器或主存某一单元任一位进行状态检测或强置 D. 进行移位操作 [正确答案] C [问题] 在微型机系统中,外围设备通过____与主板的系统总线相连接(难度系数:3) [选择答案] A. 适配器 B. 设备控制器 C. 计数器 D. 寄存器 [正确答案] A [问题] 系统总线中地址线的功能是______ (难度系数:3) [选择答案] A. 选择主存单元地址 B. 选择进行信息传输的设备 C. 选择外存地址 D. 指定主存和I/O设备接口电路的地址 [正确答案]

汇编语言程序例题0001

【例】试编写一程序计算以下表达式的值。 w = (v- (x * y + z -540 )) /x 式中x、y、z、v均为有符号字数据。 设x、y、z、v的值存放在字变量X、Y、Z、V中,结果存放在双字变量W之中,程序的流程图如图所示。 DATA SEGMENT X DW 200 Y DW 100 Z DW 3000 V DW 10000 W DW 2 DUP (?) DATA ENDS STACK SEGMENT STACK DB 200 DUP (0) STACK ENDS CODESEGMENT ASSUME DS DATA CS: CODE SS: STACK START MOV AX DATA MOV DS AX ; DATA>AX MOV AX X IMUL Y ; (X) * (DX AX MOV CX AX

MOV BX,DX ;(DX AX) T BX : CX ) MOV AX,Z CWD ; (Z)符号扩展 ADD CX,AX ADC BX,DX ; ( BX: CX)+( DX:AX)BX: CX) SUB CX,540 SBB BX,0 ;( BX:CX) - 5 40~BX : CX) MOV AX,V CWD ; (V)符号扩展 SUB AX,CX SBB DX, BX ;( DX: AX)-((BX CX DX: AX) IDIV X ;( DX:AX)/X MOV W,AX ;商5 MOV W+2 DX ;余数D?W+2 MOV AH,4CH INT 21H CODEENDS ;退出DOS 状态 END START 【例】已知某班学生的英语成绩按学号(从 1 开始)从小到大的顺序排列在要查的学 生的学号放在变量NO中,查表结果放在变量ENGLISH中。编写程序如下: STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS DATA SEGMENT TAB DB 80 ,85,86,71,79,96 DB 83 ,56,32,66,78,84 NO DB 10 ENGLIST DB ? DATA ENDS CODE SEGMENT ASSUME DS: DATA,SS: STACK,CS: CODE BEGIN: MOV AX,DATA MOV DS,AX LEA BX,TAB MOV AL,NO DEL AL XLAT TAB MOV ENGLIS,H AL MOV AH,4CH INT 21H CODEENDS TAB表中,

完整版汇编语言试题及答案..doc

一,单项选择题 (每小题 1 分,共 20 分 1-10CCCCAADACB 11-20.ADBBAADDCC 1.指令 JMP FAR PTR DONE 属于 ( C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2.下列叙述正确的是 ( A.对两个无符号数进行比较采用CMP 指令 ,对两个有符号数比较用CMP S 指令 B.对两个无符号数进行比较采用CMPS 指令 ,对两个有符号数比较用CM P 指令 C.对无符号数条件转移采用JAE/JNB 指令 ,对有符号数条件转移用JGE/J NL 指令 D.对无符号数条件转移采用JGE/JNL 指令 ,对有符号数条件转移用JAE/J NB 指令 3.一个有 128 个字的数据区 ,它的起始地址为 12ABH:00ABH, 请给出这个数据区最末一个字单元的物理地址是 ( A.12CSBH B.12B6BH

C.12C59H D.12BFEH 4.在下列指令的表示中 ,不正确的是 ( A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是 ( A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令 JNE 的测试条件为 ( A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为 ( A.BX 或 CX

汇编语言程序设计练习题

汇编语言程序设计练习题 阅读程序并完成填空: 1.1.MOV BL,85H MOV AL,17H ADD AL,BL AL=?,BL=?,CF=? 2.2.MOV AX,BX NOT AX ADD AX,BX INC AX AX=?,CF=? 3.3.MOV AX,0FF60H STC MOV DX,96 XOR DH,0FFH SBB AX,DX AX=?,CF=? 4.4.MOV BX,0FFFEH MOV CL,2 SAR BX,CL 5.5.MOV BX,0FFH AND BX,0FFFH OR BX,0F0FH XOR BX,00FFH 上述程序段运行后,BX=?,CF=? 6.6.CMP AX,BX JGE NEXT XCHG AX,BX NEXT:CMP AX,CX JGE DONE XCHG AX,CX DONE:。。。。。 试回答: (1)(1)上述程序段执行后,原有AX、BX、CX中最大数存放在哪个寄存器中? (2)(2)这3个数是带符号数还是无符号数?

7.7.在数据段ADDR1地址处有200个字节,要传送到数据段ADDR2处。 MOV AX,SEG ADDR1 MOV DS,AX MOV ES,------- MOV SI,------- MOV DI,OFFSET ADDR2 MOV-----,200 CLD REP--------- 8.8.ADDR1开始的单元中连续存放两个双字数据,将其求和存放在ADDR2开始的单元。 MOV CX,2 XOR BX,BX CLC NEXT:MOV AX,[ADDR1+BX] ADC AX,------- MOV[ADDR2+BX],AX ADD--------,2 ---------NEXT 9.9.设初值AX=1234H,BX=5678H,DX=0ABCDH,则执行下面一段程序后AX=------,BX=----,DX=--------。 MOV CL,4 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL 10.10.设有一个首地址为ARRAY有N个字数据的数组,要求求出该数组之和,并把结果存入TOTAL地址中,有关程序如下:MOV CX,------ MOV AX,0 MOV SI,0 START:ADD AX,-----

【汇编语言程序设计】试题及答案合集

《汇编语言程序设计试题及答案》合集 汇编语言程序设计试题及答案 1.对于有符号的数来说,下列哪个值最大(D) A:0F8H B:11010011B C:82 D:123Q 2.下列有关汇编语言中标号的命名规则中,错误的是(D) A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号 D:.号不可位于标号首 3.8088/8086存储器分段,每个段不超过(D ) A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式(B)A:寄存器寻址B:相对基址变址寻址 C:变址寻址D:基址变址寻址 5.若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 6.8086/8088系统执行传送指令MOV时( A) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 7.若要求一个操作数中的若干位维持不变,若干位置?1?,可以使用(B)A:NOT B:OR C:AND D:XOR 8.下列指令中段默认为堆栈段的是( C) A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB [BX],[BP][DI] D. MOV DX,[1000H] 9.关于8086/8088微机系列,下列说法哪个是正确的(D) A:一个存储单元由16个二进制位组成,简称字。

B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C:在内存空间中,可以无限分配段,且段的大小不受限制。 D:段与段之间可以邻接,也可以重叠。 10.下列关于堆栈的说法,错误的是(D) A:以?先入后出?为原则。 B:栈区最高地址单元的前一个单元为栈底。 C:运行中SP寄存器动态跟踪栈顶位置。 D:压栈和弹出都是以字节为单位。 11.表示过程定义结束的伪指令是( A) A.ENDP B.ENDS C.END D.ENDM 12.BUF1 DB 3 DUP(0,2 DUP (1,2),3) COUNT EQU $-BUF1 符号COUNT等价的值是( B) A.6 B.18 C.16 D.9 13.下列标志位中,可以用来判断计算结果正负的是(B) A:PF B:SF C:DF D:OF 14.下列指令正确的是( CD) A. MOV [100H], [BX] B.MOV DS, ES C. ADD V[BX], CX D.MOV AX, 34H 15.下列哪个寄存器是属于指针寄存器(C) A:SI B:DX C:SP D:ES 二、填空题 (每小题4 分,共 20 分) 1.下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出) FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _LEA SI,FLD______ MOV CX, 8 XOR AX, AX

汇编语言试题及答案.

一,单项选择题(每小题1分,共20分 1-10CCCCAADACB 11-20.ADBBAADDCC 1.指令JMP FAR PTR DONE属于( C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 2.下列叙述正确的是( A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMP S指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CM P指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/J NL指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/J NB指令 3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是( A.12CSBH B.12B6BH

C.12C59H D.12BFEH 4.在下列指令的表示中,不正确的是( A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是( A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令JNE的测试条件为( A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为( A.BX或CX

B.CX或SI C.DX或SI D.SI或DI 8.已知BX=2000H,SI=1234H,则指令MOV AX,[BX+SI+2]的源操作在(中。 A.数据段中偏移量为3236H的字节 B.附加段中偏移量为3234H的字节 C.数据段中偏移量为3234H的字节 D.附加段中偏移量为3236H的字节 9.执行如下程序:( MOV AX,0 MOV AX,0 MOV BX,1 MOV CX,100 A:ADD AX,BX INC BX LOOP A HLT 执行后(BX=( A.99

汇编语言例子

实验三: 1)题目:在内存中从ARRAY开始的连续三个字节单元存放着30H,40H,50H。编制程序将这三个连续的数据传送到内存TABLE开始的单元。 DATA SEGMENT ARRAY DB 30H,40H,50H 定义数据段 TABLE DB 3 DUP (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,ARRAY LEA DI,TABLE MOV CX,3 REP MOVSB JMP $ CODE ENDS END START (2)题目:把内存2000H和3000H字单元的内容相加,结果存入4000H单元。(不考虑溢出) DATA SEGMENT ORG 2000H DW 1234H ORG 3000H DW 5678H ORG 4000H DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,[2000H] ADD AX,[3000H] MOV [4000H],AX JMP $ CODE ENDS END START 实验四 1、数据传送指令和算术运算指令完成NUM1和NUM2相加,结果放入SUM中。

DATA SEGMENT NUM1 DW 0012H,0030H,0FC21H ; 数1 NUM2 DW 3E81H,44E9H,6D70H ; 数2 SUM D W 3 DUP(?) ; 结果单元 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV CX,3 LEA SI,NUM1 LEA DI,NUM2 LEA AX,SUM HE: MOV BX,[SI] ADD BX,[DI] MOV [AX],BX INC SI INC DI INC AX LOOP HE MOV AH, 4CH ; 返回DOS INT 21H CODE ENDS END START 2、内存中自TABLE开始的七个单元连续存放着自然数0至6的立方值(称作立方表)。;任给一数X(0≤X≤6)在XX单元,查表求X的立方值,并把结果存入YY单元中。;提示用XLAT指令 DATA SEGMENT TABLE DB 0H,1H,2H,3H,4H,5H,6H XX DB 1 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,TABLE MOV AL,[XX] XLAT MOV DL,AL MOV AH,02H INT 21H JMP $

汇编语言试题及答案(1)

一,单项选择题(每小题1分,共20分) 1.指令JMP FAR PTR DONE属于() A.段内转移直接寻址B.段内转移间接寻址C.段间转移直接寻址D.段间转移间接寻址2.下列叙述正确的是() A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMP S指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CM P指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/J NL指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/J NB指令 3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是() A.12C5BH B.12B6BH C.12C5AH D.12BFEH 4.在下列指令的表示中,不正确的是() A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 5.在进行二重循环程序设计时,下列描述正确的是() A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 6.条件转移指令JNE的测试条件为() A.ZF=0 B.CF=0 C.ZF=1 D.CF=1 7.8086CPU在基址加变址的寻址方式中,变址寄存器可以为()A.BX或CX B.CX或SI C.DX或SI D.SI或DI 8.已知BX=2000H,SI=1234H,则指令MOV AX,[BX+SI+2]的源操作在()中。 A.数据段中偏移量为3236H的字节 B.附加段中偏移量为3234H的字节 C.数据段中偏移量为3234H的字节

典型试题

第一章典型试题 一. 填空题 https://www.wendangku.net/doc/4214011693.html,/wlzx/%BA%CF%B9%A4%B4%F3/%BB%E3%B1%E0%D3%EF%D1%D4%B3%CC%D0%F2%C9%E8%BC%C6/huibian/mulu.htm 1一个十进制数1092其对应的二进制数为____,十六进制为____。 2.某内存单元中存放的二进制代码为94H,其对应一个无符号十进制数为____,一个带符号十进制数为____,一个BCD码数为____。 4.将8存放在一个字单元中,则该单元中的二进制代码是____。 5.机器用8位二进制代码表示带符号数的数值范围是____,用16位二进制代码表示带符号数的数值范围是____。 6.数据26对应的ASCII码为____, 7.8086/8088CPU含有____根地址总线,直接寻址范围为____。 8.8086/8088CPU系统中,I/O端口地址范围是____。 9.8086/8088存储单元的物理地址在逻辑上可分成两个组成部分,即____和____,它们的长度均为____位。 10.8086/8088CPU内部一般用来存放数据的寄存器有____。 11.8086/8088CPU内部用来存放段地址寄存器的有____。 12.在状态标志寄存器F中设置了两种类型的标志位,其中____位作为状态标志位,____位作为控制标志位。 13.一个字单元有二个连续的____单元组成,其中数据的低8位存放在____单元,高8位存放在____单元。 二.单项选择题 1.将汇编语言翻译成机器语言的系统软件()。 A.编译程序 B.解释程序 C.汇编程序 D.编辑程序 2.能够将目标模块或子程序连接起来,生成可执行文件的系统程序是()。 A.DEBUG B.LINK C.MASM D.EDIT 3.设(101)x=(41)16,求x=()。 A.x=6 B.x=10 C.x=8 D.x=2 4.用十六位二进制补码表示一个带符号数,最小数为()。

汇编语言课后习题答案

2.1已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。 (1)mov ax,1200h (2)mov ax,bx (3)mov ax,[1200h] (4)mov ax,[bx] (5)mov ax,[bx+1100h] (6)mov ax,[bx+si] (7)mov ax,[bx][si+1100h] 〔解答〕 (1)AX=1200H (2)AX=0100H (3)AX=4C2AH ;偏移地址=bx=0100h (4)AX=3412H ;偏移地址=bx=0100h (5)AX=4C2AH ;偏移地址=bx+1100h=1200h (6)AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h (7)AX=65B7H ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h 〔习题2.2〕指出下列指令的错误 (1)mov cx,dl (2)mov ip,ax (3)mov es,1234h (4)mov es,ds (5)mov al,300 (6)mov [sp],ax (7)mov ax,bx+di

(8)mov 20h,ah 〔解答〕 (1)两操作数类型不匹配 (2)IP指令指针禁止用户访问 (3)立即数不允许传给段寄存器 (4)段寄存器之间不允许传送 (5)两操作数类型不匹配 (6)目的操作数应为[ SI ] (7)源操作数应为[BX+DI] (8)立即数不能作目的操作数 〔习题2.5〕已知SS = 2200H、SP = 00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?mov ax,8057h push ax mov ax,0f79h push ax pop bx pop [bx] 〔解答〕 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h

汇编语言2008秋季期末考试复习题及参考答案

汇编语言2008秋季期末考试复习题及参考答案 一、填空 1. 十进制数369转换成二进制数为()2,转换成十六进制数为()16. 2. 计算机中的指令由()和(地址码)两部分组成。 3. 8086的地址总线有20根,寻址范围为()字节。 4. 下一条将要执行的指令的地址存放在寄存器()中。 5. 写出IBM PC机的三种子程序返回的指令(RET), (IRET),(IRETD)。 6. 汇编语言源程序需经过()程序汇编,()程序连接才能生成可执行文件。 7. 存储器某单元的地址表示为2314H:4132H,则它的偏移地址=(4132),物理地址=() 8. REP指令前缀与()指令配合使用。 9. 在显示器上查看和修改内存单元的内容可以使用DEBUG的()和()命令。 10. (AL)=BFH,要求屏蔽第0,1两位,则要执行指令();如果要求第0,1位变反,可使用指令() 11. 宏汇编适合于(),()的子功能段使用; 二、选择题 1. 设字长N=16,有符号数7AE9H的补码表示为( ) A.9EA7H B. 76C4H C. 8417H D. 7AE9H 2. 比较有符号数3260H与0B425H的大小关系为( ) A. 相等 B. 小于 C. 大于 D. 不能比较 3. 指令JMP WORD PTR [BX][DI]中转移的目标地址为( ) A.16 d x(DS)+(BX)+(DI)B.16d x(ES)+(BX)+(DI) C.16d x(SS)+(BX)+(DI)D.16d x(CS)+(BX)+(DI) 4. 在指令MOV AX,[1000H]中,源操作数的寻址方式为( ) A.立即寻址B.直接寻址C.段内间接寻址D.寄存器寻址 5. 中断矢量表中存放的是( ) A. 中断类型号 B. 断点地址 C. 中断服务程序 D. 中断服务程序入口地址 6. 8086 的汇编语言指令系统中的条件转移指令可以使程序转移到( ) A. 段内的任何地方 B. 距该指令偏移地址为-32768~+32767的地方 C. 距该指令偏移地址为-128~+127的地方. D. 段外 7. 能定义ASCII码字符串的数据定义语句有( ) A. DB,DW,DD,DQ,DT B. DB,DW,DD C. DB, DW D. DB; 8. 若(AL)=87H,执行ADD AL,0F5H后,S,Z,C,O,P的状态为( ) A.SF=0,ZF=0,CF=1,OF=1,PF=0 B.SF=1,ZF=0,CF=1,OF=0,PF=1 C.SF=0,ZF=0,CF=0,OF=1,PF=0 D.SF=1,ZF=0,CF=1,OF=1,PF=1 9. 比较指令CMP( ) A. 专用于有符号数比较 B. 专用于无符号数比较 C. 专用于串比较 D. 不区分比较的对象是有符号数还是无符号数 10. 数据传送指令对标志位的影响为( ) A.都不影响;B.都影响; C.除了SAHF,POPF,其它均不影响. D.除了控制标志位,其它均不影响 三、判断题 ( )31. 段间调用的子程序必须由伪操作FAR说明为远过程。

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