当前位置:首页 >> 政史地 >> 《计算机原理与应用》习题(1-4章)

《计算机原理与应用》习题(1-4章)


第1章

微机系统导论

1.2 微处理器、微型计算机和微型计算机系统之间有何联系与区别? 答:微处理器是微型计算机的中央处理器,微型计算机是微型计算机系统硬件 部分的核心部件。 微处理器是指由一片或几片大规模集成电路组成的具有运算器和控制器功 能的中央处理器部件。 微型计算机又称主机,是指以微处理器为核心,配上存储器、输入/输出接 口电路及系统总线所组成的计算机。 微型计算机系统是指以微型计算机为中心,配以相应的外围设备(如硬盘、 显示器、键盘、鼠标等) 、电源和辅助电路(统称硬件)以及指挥微型计算机工 作的软件系统(如系统软件、应用软件)所构成的系统。

1.3 微机硬件系统的组成部分包括哪几部分?目前流行的实际微机硬件系统一般 都由哪些部件组成? 答:微机硬件系统一般都是由主机板(包括 CPU、CPU 外围芯片组、主存储器 RAM、BIOS 芯片与总线插槽) 、外设接口卡、外部设备(如硬盘、光驱、显示 器、打印机、键盘、鼠标与调制解调器)以及电源等部件所组成。 目前流行的实际微机硬件系统一般包括 CPU、主板、内存、显卡、声卡、 显示器、硬盘、光驱、键盘、鼠标、音箱、调制解调器、机箱以及电源等。

1.7 一个最基本的微处理器由哪几部分组成?它们各自的主要功能是什么? 答:一个最基本的微处理器由运算器、控制器和内部寄存器阵列 3 个部分组成。 运算器又称为算术逻辑单元(ALU) ,用来进行算术或逻辑运算以及位移循 环等操作;控制器包括指令寄存器(IR) 、指令译码器(ID) 、可编程逻辑阵列 (PLA) ,三者共同作用完成取指控制、执指控制等操作;内部寄存器阵列包括 若干个功能的寄存器和寄存器组,用以存放对应的数据,供控制器和运算器使 用。

1.11

试说明位、字节、字长的基本概念及三者之间的关系。
1

答:在计算机内部,程序和数据都是用 0、1 二进制代码的形式来表示的。每一 个二进制代码 0 或 1 就叫做 1 位 (bit) 信息, 位二进制代码作为一个字节 8 (Byte) , 2 个字节组成一个字(Word) ,字长表示计算机数据总线上一次能处理的信息的 位数,1 个字长=2 个字节=16 个位。

第2章

微机运算基础

2.2 在进位记数制中, “基数”和“位权(或权) ”的含义是什么?一个以 b 为 基数的任意进制数 N,它按位权展开式求值的一般通式是如何描述的? 答:基数就是表示该进位制所用字符或数码的个数;数制每一位所具有的值称 为位权或简称权。数 N 的按位权展开式的一般通式为

N ? ? ? ? ki ? bi ?
-m i ? n -1

式中,ki 为第 i 位的数码;b 为基数;bi 为第 i 位的权;n 为整数的总位数;m 为 小数的总位数。

2.3 将下列十进制数分别转换为二进制数。 (1) 147 答: (2) 4095 (3) 0.625 (4) 0.l5625

方法 1:整数部分:除 2 取余;小数部分:乘 2 取整 方法 2:用特殊数字

(1) 147 = 128+16+2+1 = 27+24+21+20 = 1001 0011B (2) 4095 = 4096-1 = 212-20 = 1111 1111 1111B (3) 0.625 = 0.5+0.125 = 2-1+2-3 = 0.101B (4) 0.l5625 = 0.00101B

2.4 将下列二进制数分别转换为 BCD 数。 (1) 1011 (2) 0.01 (3) 10101.101 (4) 11011.001

答:方法:先转换为十进制数,再转换为 BCD 数 (1) 1011B = 11D = 0001 0001BCD (2) 0.01B = 0.25D = 0.0010 0101BCD
2

(3) 10101.101B = 21.625D = 0010 0001.0110 0010 0101BCD (4) 11011.001B = 27.125D = 0010 0111.0001 0010 0101BCD

2.5 将下列二进制数分别转换为八进制数、十六进制数。 (1) 10101011B (3) 0.01101011B 答: (2) 1011110011B (4) 11101010.0011B

方法: 二进制数转换为八进制数:3 位变 1 位; 二进制数转换为十六进制数:4 位变 1 位。

(1) 10101011B = 253Q = 0ABH (2) 1011110011B = 1363Q = 2F3H (3) 0.01101011B = 0.326Q = 0.6BH (4) 11101010.0011B = 352.14Q = 0EA.3H

2.6 选取字长 n 为 8 位和 16 位两种情况,求下列十进制数的原码。 (1) X = +63 (2) Y = -63 (3) Z = +118 (4) W = -118

答:方法: 最高位(D7 或 D15)为符号位,其余位是数值部分的二进制形式。 (1) 8 位:[ X ]原 = 0011 1111B, (2) 8 位:[ Y ]原 = 1011 1111B, (3) 8 位:[ Z ]原 = 0111 0110B, (4) 8 位:[ W ]原 = 1111 0110B, 16 位:[ X ]原 = 0000 0000 0011 1111B 16 位:[ Y ]原 = 1000 0000 0011 1111B 16 位:[ Z ]原 = 0000 0000 0111 0110B 16 位:[ W ]原 = 1000 0000 0111 0110B

2.7 选取字长 n 为 8 位和 16 位两种情况,求下列十进制数的补码。 (1) X = +65 (2) Y = -65 (3) Z = +127 (4) W = -128

答:方法: 最高位(D7 或 D15)为符号位,若为正数,则其余位是数值部分的 二进制形式;若为负数,则其余位是数值部分的二进制形式按位取反后末 位加 1。 (1) 8 位:[ X ]补 = 0100 0001B, (2) 8 位:[ Y ]补 = 1011 1111B, (3) 8 位:[ Z ]补 = 0111 1111B,
3

16 位:[ X ]补= 0000 0000 0100 0001B 16 位:[ Y ]补= 1111 1111 1011 1111B 16 位:[ Z ]补= 0000 0000 0111 1111B

(4) 8 位:[ W ]补 = 1000 0000B,

16 位:[ W ]补= 1111 1111 1000 0000B

2.8 已知数的补码表示形式如下,分别求出数的真值与原码。 (1) [ X ]补 = 78H (3) [ Z ]补 = FFFH (2) [ Y ]补 = 87H (4) [ W ]补= 800H

答:正数的原码与补码相同,负数的原码是补码的符号位不变,其余位按位取 反后末位加 1。 (1) [ X ]原 = 0111 1000B = 78H, (2) [ Y ]原 = 1111 1001B =0F9H, (3) [ Z ]原 = 0000 1111 1111 1111B = 0FFFH, (4) [ W ]原 = 0000 1000 0000 0000B = 0800H, X = 7× 16+8 = 120 Y = -(7× 16+9) = -121 Z = 4095 W = 2048

2.12 设 X=87H,Y=78H,在下述两种情况下比较两数的大小。 (1) 均为无符号数 (2) 均为带符号数(设均为补码)

答:(1) 若均为无符号数,则 X > Y (2) 若均为带符号数,则最高位(符号位)为 1 的数为负数,最高位(符号 位)为 0 的数为正数数,所以 X < Y

2.13 选取字长 n 为 8 位,已知数的原码表示如下,求出其补码。 (1) [ X ]原 = 01010101 (3) [ Z ]原 = 11111111 (2) [ Y ]原 = 10101010 (4) [ W ]原 = 10000001

答:正数的补码与原码相同,负数的补码是原码的符号位不变,其余位按位取 反后末位加 1。 (1) [ X ]补 = 01010101B (3) [ Z ]补 = 10000001B (2) [ Y ]补 = 11010110B (4) [ W ]补 = 11111111B

2.17 阐述微型计算机在算术运算时,所产生的“进位”与“溢出”二者之间的 区别。 答:溢出是指带符号数的补码运算溢出,溢出及其判断方法:OF=D7C⊕D6C。
4

进位是指运算结果的最高位向更高位的进位 D7C。 进位和溢出是两个不同性质的 概念,不能混淆,两者没有必然的联系。

2.19

若字长为 32 位的二进制数用补码表示时,试写出其范围的一般表示式

及其负数的最小值与正数的最大值。 答:一般表示式为 -232-1 ~ +232-1-1

其负数的最小值:-232-1 = -2147483648 其正数的最大值:+232-1-1 = +2147483647

第3章

8086/8088 微处理器及其系统

3.2 8086 CPU 有多少根数据线和地址线?它能寻址多少内存地址单元和 I/O 端 口?8088 CPU 有多少根数据线和地址线?为什么要设计 8088 CPU? 答:8086 CPU 有 16 根数据线和 20 根地址线,可以寻址 1MB 的内存地址 单元和 64KB 的 I/O 端口。 8088 CPU 有 16 根数据线和 20 根地址线,但是 8088 的 BIU 通过总线控制 电路与外部交换数据的总线宽度是 8 位,总线控制电路与专用寄存器之间的数 据总线宽度也是 8 位。设计 8088 CPU 的目的是为了与 Intel 原有的 8 位外围接 口芯片直接兼容。

3.6 逻辑地址和物理地址有何区别?为什么 8086 微处理器要引入“段加偏移” 的技术思想?段加偏移的基本含义又是什么?试举例说明。 答:逻辑地址是指未定位之前在程序和指令中表示的一种地址,它包括两 部分:段地址和偏移地址;物理地址又称为实际地址,它是指 CPU 对存储器进 行访问时实际寻址所使用的地址。对 8086 CPU 而言,逻辑地址为 16 位,物理 地址为 20 位,一个物理地址可对应多个逻辑地址。 “段加偏移”寻址机制允许重定位,极大地保证了系统兼容性。 CPU 在处理数据时寻址的是 20 位的物理地址,限于 8086/8088 微处理器内 部寄存器都是 16 位的,所以微处理器的地址加法器会自动地把 16 位段寄存器
5

中的 16 位段地址左移 4 位,形成 20 位的段基址(段起始地址) ,然后同 16 位 的偏移地址相加,才能形成 20 位的物理地址。这种方法称为段加偏移。 例如, 若段地址为 1123H, 偏移地址为 15H, 1123H 左移 4 位, 11230H, 将 即 则物理地址为 PA = 11230H + 15H = 11245H。

3.14 IP 寄存器的用途是什么?它提供的是什么信息? 答:在程序正常运行过程中,IP 寄存器用来存放 BIU 要取的下一条指令的 偏移地址。IP 在程序运行中能自动进行加 1 修正,使之总是指向要执行的下一 条指令(字节) 。 有些指令 (调用子程序、 中断等) 能改变 IP 值或把 IP 值压入堆栈暂时保存, 或者由堆栈弹出到 IP 以恢复指令指针的原值。

3.20 微处理器在什么情况下才执行总线周期?一个基本的总线周期由几个状态 组成?在什么情况下需要插入等待状态? 答: 对任何一个微处理器来说, 为了从存储器中取得指令或者与之传送数据, 都需要它的总线接口单元执行一个总线周期。 一个基本的总线周期由 4 个状态组成:T1 ~ T4。 当存储器或外设的速度较慢,不能及时地跟上 CPU 的速度时,存储器或外 设就会通过“READY”信号线在 T3 状态启动之前向 CPU 发一个 “数据未准备 好”信号,这样,CPU 会在 T3 之后自动插入一个或多个等待状态 TW,以等待存 储器或外设准备好要传送的数据。

3.35 何谓寻址方式?8086/8088 微处理器有哪几种主要的寻址方式? 答:8086/8088 的操作数可位于寄存器、存储器或 I/O 端口中,CPU 对其进 行操作时就会涉及操作数的寻址方式。 8086/8088 微处理器的主要寻址方式有:固定寻址、立即数寻址、寄存器寻 址、存储器寻址等,其中存储器寻址又可分为:直接寻址和间接寻址,间接寻 址又可分为: (相对)基址寻址、 (相对)变址寻址、 (相对)基址加变址寻址。

6

3.36 试写出寻址存储器操作数时计算有效地址 EA 的通式。
?0 ? ? BX ? ?SI ? EA ? 基址值 ? ? ? 变址值 ? ? ? 位移量DISP ? 8位 ? ? ? ? BP ? ? DI ? ?16位? ? ?

3.37 指出 8086/8088 下列指令源操作数的寻址方式。 (1)MOV AX, 1200H ;立即数寻址 ;直接寻址 ;变址寻址 ;相对变址寻址 ;寄存器寻址 ;相对基址加变址寻址 ;寄存器寻址 ;基址寻址(寄存器间接寻址) ;间接端口寻址 ;相对基址寻址

(2) MOV BX, [1200H] (3) MOV BX, [SI] (4)MOV BX, [SI+1200H] (5)MOV [BX+SI], AL (6)ADD AX, [BX+DI+20H] (7)MUL BL (8)JMP BX

(9)IN AL, DX (10)INC WORD PTR[BP+50H]

3.38

指出 8086/8088 下列指令中存储器操作数物理地址的计算表达式。 ;PA = DS×10H + DI ;PA = DS×10H + BX + SI ;PA = DS×10H + BX + DI + 8 ;PA = ES×10H + BX ;PA = DS×10H + 2400H ;PA = DS×10H + BX + DI + 1200H ;PA = SS×10H + BP + SI ;PA = DS×10H + DI

(1)MOV AL, [DI] (2)MOV AX, [BX+SI] (3)MOV AL, 8[BX+DI] (4)ADD AL, ES: [BX] (5)SUB AX, [2400H] (6)ADC AX, [BX+DI+1200H] (7)MOV CX, [BP+SI] (8)INC BYTE PTR[DI]

3.39

指出 8086/8088 下列指令的错误何在? [SI], IP
7

(1)MOV

(2)MOV

CS, AX

(3)MOV (5)PUSH (7)MUL (9)MOV

BL, SI+2 2400H -60H [BX], [DI]

(4)MOV (6)INC (8)ADD (10)MOV

60H, AL [BX] [2400H], 2AH SI, AL

(1)指令指针 IP 不能传送。 (2)CS 段寄存器不能做操作数。 (3)传送类型不匹配,BL 为 8 位,SI+2 为 16 位。 (4)目的操作数不能为立即数。 (5)PUSH 指令中操作数不能为立即数。 (6)应在指令前加伪指令 BYTE PTR 或 WORD PTR 表明是对字节进行加 1 操作还是对字进行加 1 操作。 (7)乘数不能为立即数。 (8)[2400H]前应加伪指令 BYTE PTR 或 WORD PTR 进行类型说明。 (9)两个操作数不能同为存储器操作数。 (10)类型不匹配,SI 为 16 位寄存器,而 AL 为 8 位寄存器。

3.41

阅读下列程序段,指出每条指令执行后有关寄存器的内容是多少? MOV DEC AND MOV SAL MOV ADD AX, 0ABCH AX AX, 00FFH CL, 4 AL, 1 CL, AL CL, 78H ; AX ← 0ABCH ; AX ← 0ABBH ;AX ← 00BBH ; CL ← 4 ; AL ← 76H ; CL ← 76H ; CL ← 0EEH ; AX ← 0076H ; BX ← 0076H (高 8 位屏蔽)

PUSH AX POP BX

3.42

指出 RET 和 IRET 两条指令的区别,并说明各用在什么场合?

(1)RET 和 IRET 是两条返回主程序的指令,但 RET 是与过程(子程序)调
8

用指令 CALL 对应使用的过程返回指令,而 IRET 是与中断指令 INT n 对应使用的中断返回指令。 (2)RET 指令应安排在子程序的出口,即子程序的最后一条指令处,它的功能 是从堆栈顶部弹出由 CALL 指令压入的断点地址值 IP 或 CS、 迫使 CPU IP, 返回到调用程序的断点去继续执行。 (3)IRET 指令总是安排在中断服务程序的出口处,由它控制从堆栈中弹出程 序断点送回 CS 和 IP 中, 弹出标志寄存器内容送回 F 中, 迫使 CPU 返回到 断点继续执行后续程序。

3.43 说明 MOV BX, DATA 和 MOV BX, OFFSTE DATA 指令之间的区别。 答: MOV BX, DATA 是直接将 DATA 的值赋给 BX 寄存器; MOV BX, OFFSTE DATA 是将 DATA 在段内的偏移量赋给 BX 寄存 器。 (注:DATA 为变量名,它指内存中的一个数据区的名字,它可以作为指令中的 存储器操作数来使用。变量仅对应于数据区中的第一个数据项,若需对数据区 中其它数据项进行操作,必须用地址表达式指出哪个数据项是指令中的操作 数。 )

3.44

给定 DS=1100H,BX=0200H,LIST=0250H,SI=0500H。试确定下面各

条指令寻址存储器的地址。 (1)MOV (2)MOV (3)MOV (4)MOV 答: (1)PA = DS×10H + SI + LIST = 11000H + 0500H + 0250H = 11750H (2)PA = DS×10H + BX + SI + LIST = 11000H + 0200 + 0500H + 0250H = 11950H (3)PA = DS×10H + BX + SI = 11000H + 0200H + 0500H = 11700H
9

LIST[SI], DX CL, LIST[BX+SI] CH, [BX+SI] DL, [BX+100H]

;相对变址寻址 ;相对基址加变址寻址 ;基址加变址寻址 ;相对基址寻址

(4)PA = DS×10H + BX + 100H = 11000H + 0200H + 100H = 11300H

3.45

假定 PC 机存储器低地址区有关单元的内容如下:

(20H)=3CH,(21H)=00H,(22H)=86H,(23H)=0EH 且 CS=2000H,IP=0010H, SS=1000H,SP=0100H,FLAGS=0240H,这时若执行 INT 8 指令,试问: (1) 程序转向从何处执行(用物理地址回答)? (2) 栈顶 6 个存储单元的地址(用逻辑地址回答)及内容分别是什么? 答:(1) CS = 0E86H,IP = 003CH PA = CS×10H + IP = 0E860H + 003CH = 0E89CH (2) 1000H: 00FAH 1000H: 00FBH 1000H: 00FCH 1000H: 00FDH 1000H: 00FEH 1000H: 00FFH 10H(12H) 00H 00H 20H 40H 02H

3.46

设 SP=2000H,AX=3000H,BX=5000H,执行下列片段程序后,问 SP=? AX=? BX=? AX BX AX ; SP ← SP - 2 = 1FFEH,AX=3000H ; SP ← SP - 2 = 1FFCH,BX=5000H ; SP ← SP + 2 = 1FFEH,AX=5000H AX = 5000H, BX = 5000H

PUSH PUSH POP 答:

SP = 1FFEH,

3.48

若 AX=5555H, BX=FF00H, 试问在下列程序段执行后, AX=? CF=? AND XOR NOT AX, BX AX, AX BX ; AX = 5500,BX = FF00H ; AX = 0000H ; BX = 00FFH

BX=?

答: AX = 0000H, BX = 00FFH
10

由于 AND、OR、XOR 指令的运算结果使 CF=0,NOT 指令的运算结果 不影响 CF 位,所以 CF = 0。

3.49 答:

若 CS=E000H,说明代码段可寻址物理存储地址空间的范围。 首地址为: CS×10H + 0000H = E0000H 末地址为: CS×10H + FFFFH = EFFFFH

故代码段可寻址物理存储地址空间的范围为 E0000H ~ EFFFFH,共 64KB。

3.50 若 DS=3000H,BX=2000H,SI=0100H,ES=4000H,计算出下述各条指令 中存储器操作数的物理地址。 (1) MOV [BX], AH (3) MOV AL, [BX+SI] 答: (2) ADD AL, [BX+SI+1000H] (4) SUB AL, ES: [BX]

(1) PA = DS×10H + BX = 30000H + 2000H = 32000H (2) PA = DS×10H + BX + SI + 1000H = 30000H + 2000H + 0100H + 1000H = 33100H (3) PA = DS×10H + BX + SI = 30000H + 2000H + 0100H = 32100H (4) PA = ES×10H + BX = 40000H + 2000H = 42000H

3.51 试比较 SUB AL, 09H 与 CMP AL, 09H 这两条指令的异同, AL=08H, 若 分别执行上述两条指令后,SF=? CF=? OF=? ZF=? 答: SUB AL, 09H ; AL← AL - 09H

结果返回 AL 寄存器,且根据结果置标志位。 CMP AL, 09H ; AL - 09H

只根据结果置标志位,结果不返回 AL 寄存器。 执行 SUB AL, 09H 指令后,AL=FFH, SF=1, CF=1, OF=0, ZF=0;

执行 CMP AL, 09H 指令后,AL=08H, SF=1, CF=1, OF=0, ZF=0。

3.52

选用最少的指令,实现下述要求的功能。
11

(1) AH 的高 4 位清零 (2) AL 的高 4 位取反 (3) AL 的高 4 位移到低 4 位,高 4 位清零。 (4) AH 的低 4 位移到高 4 位,低 4 位清零。 答: (1) (2) (3) AND XOR MOV SHR (4) MOV SHL AH, 0FH AL, 0F0H CL, 4 AL, CL CL, 4 AH, CL

3.53 设 BX=6D16H,AX=1100H,写出下列指令执行后 BX 寄存器的内容。 MOV ROL SHR 答: CL, 06H AX, CL BX, CL

AX = 1100H = 0001 0001 0000 0000B 循环左移 6 位后:AX = 0100 0000 0000 0100B = 4004H BX = 6D16H = 0110 1101 0001 0110B 逻辑右移 6 位后:BX = 0000 0001 1011 0100B = 01B4H

3.54

设初值 AX=0119H,执行下列程序段后 AX=? MOV ADD DAA XCHG ADC DAA MOV MOV AH, AL AL, CH
12

CH, AH AL, AH

; CH ← 01H ; AL ← 1AH ; AL ← 20H,CF = 0

AL, CH AL, 34H

; AL ← 01H,CH ← 20H ; AL ← 35H ; AL ← 35H ; AH ← 35H ; AL ← 20H

HLT 答: AX = 3520H

3.55

设初值 AX=6264H,CX=0004H,在执行下列程序段后 AX=? AND JZ SHL ROR AX, AX DONE CX, 1 AX, CL AX, 1234H ; AX ← 6264H ; AX=0,则转;AX≠0,顺序执行 ; CX ← 0008H ; AX ← 6462H ; AX ← 7676H

DONE: OR 答: AX=7676H

3.56 答:

写出可使 AX 清零的几条指令。 MOV SUB AND XOR AX, 0 AX, AX AX, 0000H AX, AX

3.78 设计一个程序段,将 DH 中的最左 3 位清 0,而不改变 DH 中的其它位, 结果存入 BH 中。 答: AND MOV DH, 1FH BH, DH

3.81 设计一个程序段,将 AX 中的最右 4 位置 1,将 AX 中的最左 3 位清 0, 并且把 AX 中的 7、8、9 位取反。 答: OR AND XOR AL, 0FH AH, 1FH AX, 01C0H(或 0380H)

13

3.82 选择正确的指令以实现下列任务。 (1) 把 DI 右移 3 位,再把 0 移入最高位。 (2) 把 AL 中的所有位左移 1 位,使 0 移入最低位。 (3) AL 循环左移 3 位。 (4) DX 带进位位循环右移 1 位。 答: (1) MOV CL, 3 SHR DI, CL (2) SAL AL, 1

(3) MOV CL, 3 ROL AL, CL (4) RCR DX, 1

3.89 在执行中断返回指令 IRET 和过程(子程序)返回指令 RET 时,具体操 作内容有什么区别? 答:执行中断返回指令 IRET 指令时,具体操作内容为: (1)先将由 SP 所指定的堆栈内容弹出至 IP,恢复 IP 值: IP ← (SP), SP ← SP+2

(2)再将由 SP 所指定的堆栈内容弹出至 CS,恢复 CS 值: CS ← (SP), SP ← SP+2

(3)最后将由 SP 所指定的堆栈内容弹出至标志寄存器 FLAGS,恢复标志寄存 器的值: FLAGS ← (SP), SP ← SP+2

执行过程(子程序)返回指令 RET 时,具体操作步骤同(1)(2)步的内容, 、 但没有第(3)步。

第4章
4.1 已知某数据段中有 COUNT1 COUNT2

8086/8088 汇编语言程序设计
16H 16H
14

EQU DW

下列两条指令有何异同点。 MOV MOV AX, COUNT1 BX, COUNT2 ;×,COUNT1 为 8 位二进制数 ;√,BX = 0016H

4.2 下列程序段执行后,寄存器 AX、BX、和 CX 的内容分别是多少? ORG 0202H

DA_WORD DW 20H MOV MOV MOV MOV AX, DA_WORD BX, OFFSET DA_WORD CL, BYTE PTR DA_WORD CH, TYPE DA_WORD BX=0202H, ; AX = 0020H ; BX = 0202H ; CL = 20H ; CH = 2 CX=0220H。

答:程序段执行后, AX=0020H,

4.4 试编制一程序,把 CHAR1 中各小写字母分别转换为对应的大写字母,并存 放在 CHAR2 开始的内存单元中。 CHAR1 CHAR2 DB ‘abcdef’

DB $-CHAR1 DUP(0)

参考程序 1: DATA SEGMENT CHAR1 DB 'abcdef' CHAR2 DB $-CHAR1 DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE DUP(0)

参考程序 2: DATA SEGMENT CHAR1 CHAR2 DB 'abcdef' DB $-CHAR1 DUP(0)

DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE

START: MOV AX, DATA MOV DS, AX CLD MOV CX, 6
15

START: MOV AX, DATA MOV DS, AX CLD MOV CX, 6

MOV SI,0 MOV DI,0 AG: MOV AL, CHAR1[SI] SUB AL,20H MOV CHAR2[DI], AL INC SI INC DI LOOP AG MOV AH, 4CH INT 21H CODE ENDS END START AG:

LEA SI, CHAR1 LEA DI, CHAR2 MOV AL, [SI] SUB AL,20H MOV [DI], AL INC SI INC DI LOOP AG MOV AH, 4CH INT 21H CODE ENDS END START

4.6 从 BUF 地址处起,存放由 100 个字节的字符串,设其中有一个以上的“A” 字符,编程查找出第一个“A”字符相对起始地址的距离,并将其存入 LEN 单 元。 串搜索(SCAS)指令的功能:用来从目标串中搜素(或查找)某个关键字,要 求将待查找的关键字在执行该指令之前事先置入 AX 或 AL 中。若为字节搜素, 则使用 SCASB,相应的待查找字节置入 AL 中;若为字搜素,则使用 SCASW, 相应的待查找字置入 AX 中。 搜索的实质是将 AX 或 AL 中的关键字减去由 DI 的内容所指向的目标串中的一 个元素,不传送结果,只根据结果置标志位,然后修改 DI 的内容指向下一个元 素。通常在 SCAS 前加重复前缀 REPNE/REPNZ,用来从目标串中寻找关键字, 操作一直进行到 ZF=1(查到了某关键字)或 CX=0(终未查到)为止。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 参考程序如下: DATA SEGMENT BUF DB

'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
16

N LEN

EQU $-BUF DW ?

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

START:MOV AX, DATA MOV DS, AX MOV ES, AX CLD MOV CX, N LEA DI, BUF MOV AL, 'A' REPNE SCASB DEC DI MOV BX, OFFSET LEN MOV [BX], DI MOV AH, 4CH INT 21H CODE ENDS END START %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4.7 写出下列逻辑地址的段地址,偏移地址和物理地址。 (1)4312H: 0B74H (2)10ADH: 0DE98H (3)8314H: 0FF64H (4)78BCH: 0FD42H 答: (1)段地址:4312H,偏移地址:0B74H 物理地址:PA = 4312H×10H + 0B74H = 43C94H (2)段地址:10ADH,偏移地址:0DE98H
17

物理地址:PA = 10ADH×10H + 0DE98H = 1E968H (3)段地址:8314H, 偏移地址:0FF64H 物理地址:PA = 8314H×10H + 0FF64H = 83204H (4)段地址:78BCH,偏移地址:0FD42H 物理地址:PA = 78BCH×10H + 0FD42H = 88902H

4.8 某程序设置的数据区如下所示。 DATA SEGMENT DB1 DW1 DB 12H, 34H, 0, 56H DW 78H, 90H, 0AB46H, 1234H DB1 DW1 $-DB1 DUP(0)

ADR1 DW ADR2 DW AAA DUF DW DB 5

DATA ENDS 画出该数据段内容在内存中的存放形式(要求用十六进制补码表示,按字节组 织) 答: 0 1 2 3 4 5 6 7 8 9 10 11 DB1 12H 34H 00H 56H 78H 00H 90H 00H 46H 0ABH 34H 12H 12 13 14 15 16 17 18 19 20 21 22 BUF ADR1 ADR2 AAA 00H 00H 04H 00H 10H 00H 00H 00H 00H 00H 00H

DW1

4.9 假设 BX=54A3H,变量 VALUE 中存放的内容为 68H,确定下列各条指令 单独执行后 BX=?
18

(1)XOR (2)OR (3)AND (4)SUB (5)XOR (6)TEST

BX, VALUE BX, VALUE BX, 00H BX, VALUE BX, 0FFH BX, 01H

; BX = 54CBH ; BX = 54EBH ; BX = 0 ; BX = 543BH ; BX = 545CH ; BX = 54A3H

4.11

假设数据段的定义如下所示: P1 DW ? P2 DB 32 DUP(?) PLENTH EQU $-P1

试问 PLENTH 的值为多少?它表示什么意义? 答: PLENTH = 2 + 32 = 34

它表示以 P1 和 P2 开头的成组变量共占用了多少个字节的内存空间。

4.12 若 AL 中的内容为 2 位压缩的 BCD 数,即 78H,试编程: (1) 将其拆开成非压缩的 BCD 码,高低位分别存入 BH 和 BL 中。 (2) 将上述已求出的 2 位 BCD 码变换成对应的 ASCII 码,且存入 CH 和 CL 中 ****************************************************** 参考程序如下: DATA SEGMENT D1 DB 78H

DATA ENDS CODE SEGMENT ASSUME BEGIN: CS:CODE, DS:DATA

MOV AX, DATA

MOV DS, AX MOV AL, D1 PUSH AX
19

MOV CL, 4 SHR AL, CL MOV BH, AL POP AX AND AL,0FH MOV BL, AL MOV CH, BH MOV CL, BL CMP CH, 9 JBE NEXT1 ADD CH, 7 NEXT1: ADD CH, 30H

CMP CL, 9 JBE NEXT2 ADD CL, 7 NEXT2: ADD CL, 30H

MOV AH, 4CH INT 21H CODE ENDS END BEGIN ********************************************** 4.20 试编程:从键盘上输入同学的姓名 Mr. ABC 或 Mrs. XYZ,当按动任意一 个键时,屏幕上显示出 “Welcome Mr. ABC”或“Welcome Mrs. XYZ”。

参考程序: D SEGMENT

D1 DB 'Please enter your name:', 0DH, 0AH, '$' D2 DB 'Welcome ', '$' D3 DB 20
20

DB ? DB 20 DUP(7), '$' D C ENDS SEGMENT ASSUME CS:C, DS:D BG: MOV AX, D MOV DS, AX LEA DX, D1 MOV AH, 9 INT 21H LEA DX, D3 MOV AH, 0AH INT 21H LEA DX, D2 MOV AH, 9 INT 21H LEA DX, D3+2 MOV AH, 9 INT 21H MOV AH, 4CH INT 21H C ENDS END BG

21


更多相关文档:

《计算机图形学》1-4章习题解答

《计算机图形学》1-4章习题解答_调查/报告_表格/...教材 P3) 4.简述你所理解的计算机图形学的应用领域...答:随机扫描显示器的工作原理:要显示的图形定义是一...

微型计算机原理及应用试题库答案

《微型计算机原理应用》试题库及答案 一、 填空 1.数制转换 A)125D=(0111...进行数据交换时,为解决两者之间的同步与协调、数据格式转换等问 题,必须要引入(...

《大学计算机基础》第五版_第1-4章课后习题答案

《大学计算机基础》第五版_第1-4章课后习题答案_理学...应用软件是利 用计算机的软、硬件资源为某一专门...1) 工作原理:集线器采用广播技术将收到的数据向所有...

8086微型计算机原理与应用(吴宁)习题答案(第四章)

8086微型计算机原理与应用(吴宁)习题答案(第四章)_理学_高等教育_教育专区。8086...MY6C EQU 100 DATA ENDS 4-6 BX=2 AL=2 CX=10 DL=10 4-7 VAR1=30H...

-数据库原理及应用第二版-第1-4章习题答案-课后习题

-数据库原理应用第二版-第1-4章习题答案-课后习题_理学_高等教育_教育专区...数据库系统是指在计算机中引入数据库后 的系统,一般由数据库、数据库管理系统(...

微计算机原理与应用模拟题1

计算机原理与应用模拟题1_工学_高等教育_教育专区。模拟试卷 1 . 单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在 题后的...

《微型计算机原理及应用》习题答案和实验

《微型计算机原理及应用》 微型计算机原理应用》 习题参考答案及实验项目 [ 第 1 章] 1.1 题 (1) 64H (2) DCH (3) ECH (4) 14H 1.2 题 (1) ...

会计信息系统1-4章习题答案

会计信息系统1-4章习题答案_教育学_高等教育_教育专区...A.会计软件 B.计算机软件——系统软件和应用软件 C...一般的管理信息系统所采用的概念、原理、技术和方法...

《微型计算机原理及应用》课后习题答案

李伯成《微机原理》 李伯成《微机原理》习题 本章作业参考书目: 本章作业参考书目: 第一章 微型计算机原理与应用——Intel 80X86 系列》 系列》 ① 薛钧义主编 ...

微机原理与应用习题参考答案(郑学坚)

微机原理与应用习题参考答案(郑学坚)_理学_高等教育_教育专区。第 1 章作业 1...A9H 2.设计算机字长为 8 位,求机器数 E3H 分别为有符号、无符号数时对应的...
更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com