第3章 汇编语言程序设计
〔习题3.9〕
给出下列语句中,指令立即数(数值表达式)的值: ⑴ mov al,23h AND 45h OR 67h ⑵ mov ax,1234h/16+10h ⑶ mov ax,23h SHL 4
⑷ mov al,’a’ AND (NOT(’a’-’A’))
⑸ mov ax,(76543 LT 32768) XOR 7654h 〔解答〕
(1) al=67h
(2) ax=133h,dx=4h (3) ax=0230h (4) al=41h (5) ax=7654h
〔习题3.10〕
画图说明下列语句分配的存储空间及初始化的数据值: ⑴ byte_var db ’ABC’,10,10h,’EF’,3 dup(-1,?,3 dup(4)) ⑵ word_var dw 10h,-5,3 dup(?) 〔解答〕
(1)从低地址到高地址,各个字节依次是:
41h 42h 43h 0ah 10h 45h 46h ffh - 04h 04h 04h ffh - 04h 04h 04h ffh - 04h 04h 04h (2)从低地址到高地址,各个字节依次是: 10h 0 FBh FFh - - - - - -
其中“-”表示无初值,实际上汇编程序会填入0。
〔习题3.11〕
请设置一个数据段,按照如下要求定义变量:
⑴ my1b为字符串变量,表示字符串“Personal Computer” ⑵ my2b为用十进制数表示的字节变量,这个数的大小为20 ⑶ my3b为用十六进制数表示的字节变量,这个数的大小为20 ⑷ my4b为用二进制数表示的字节变量,这个数的大小为20 ⑸ my5w为20个未赋值的字变量 ⑹ my6c为100的符号常量
⑺ my7c为字符串常量,代替字符串“Personal Computer”
11
〔解答〕
my1b my2b my3b my4b my5w my6c my7c
db 'Personal Computer' db 20 db 14h
db 00010100b dw 20 dup(?) = 100
equ
〔习题3.15〕
假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的具体错误原因。
⑴ mov byte ptr [bx],1000 ⑵ mov bx,offset myword[si] ⑶ cmp mybyte1,mybyte2 ⑷ mov mybyte1,al+1 ⑸ sub al,myword ⑹ jnz myword 〔解答〕
(1) 1000 超过一个字节所能表达的最大整数 (2)SI 应为偶数
(3)两个内存单元不能直接运算 (4)不能使用al+1,应改为[al+1]
(5)源操作数与目的操作数类型不匹配
(6)条件转移指令后面应接标号,而不是变量
〔习题3.16〕
编写一个程序,把从键盘输入的一个小写字母用大写字母显示出来。 〔解答〕
mov ah,1 ;只允许输入小写字母 int 21h sub al,20h ;转换为大写字母 mov dl,al mov ah,2
int 21h ;显示
12
第4章 微机总线
〔习题4.1〕
微机总线的信号线包括______、______、_______、以及电源和地线。微机系统可以将总线划分为三层(类),它们是______、______和_______。 〔解答〕
数据总线 、 地址总线 、 控制总线 芯片总线、 内总线、外总线 〔习题4.2〕
占用总线进行数据传输,一般需要经过总线请求和仲裁、__________、__________和结束4个阶段。 〔解答〕
寻址,数据传送 〔习题4.7〕
执行一条指令所需要的时间被称为______周期,而总线周期指的是______,8088基本的总线周期由______个T组成。如果8088的CLK引脚接5MHz的时钟信号,那么每个T状态的持续时间为______。 〔解答〕
指令
CPU通过总线操作与外界(存储器和I/O端口)进行一次数据交换的过程(时间) 4 200ns 〔习题4.8〕
请解释8088以下引脚信号:CLK、A19/S6~A16/S3、A15~A8、AD7~AD0、IO/M、RD、WR、ALE的含义,并画出它们在存储器写总线周期中的波形示意。 〔解答〕
CLK:CPU时钟信号
A19/S6~A16/S3:地址信号A19~A16和状态信号S6~S3分时复用信号 A15~A8:地址信号A15~A8
AD7~AD0:地址信号A7~A0和数据信号D7~D0分时复用信号 IO/M*:I/O接口和存储器操作区别信号 RD*:读控制信号,WR*:写控制信号 ALE:地址锁存信号
13
〔习题4.9〕
在8088的工作过程中,什么情况下会产生TW?具体发生在什么时刻? 〔解答〕
当8088进行读写存储器或I/O接口时,如果存储器或I/O接口无法满足CPU的读
写时序(来不及提供或读取数据时),需要CPU插入等待状态Tw。
在读写总线周期的T3和T4之间插入Tw。 〔习题4.11〕
在8088系统中,读取指令“ADD [2000H], AX”(指令长度为3个字节)和执行该指令各需要几个总线周期?它们各是什么样的总线周期? 〔解答〕
每个总线周期只能读写一个字节数据。所以读取指令长度为3个字节的指令
“ADD [2000H], AX”需要 3 个时钟周期,执行时需要 2 个时钟周期。
读取指令是 存储器读 总线周期,执行时是 存储器写 总线周期。
14
第5章 主存储器
〔习题5.3〕
类似处理器总线,存储器芯片也分成数据、地址和控制3类引脚。以存储结构为32K×8的SRAM 62256为例,该芯片应有________个数据引脚、________个地址引脚,3个典型的控制引脚分别是________、________和________。 〔解答〕
8 15 片选 输出允许 写入允许 〔习题5.7〕
EEPROM的擦写与闪存的擦写有什么不同?以AT28C040或AT29C512为例,说明常用的两种判断擦写是否完成的方法,并估算两者完成整个芯片编程的最快时间。 〔解答〕
AT28C040最快编程时间:
(512×1024/256)×10ms=20480ms≈20s AT29C512最快编程时间:
512扇区×(10ms+128字节×(150×10-3+90×10-6)ms)≈14950.4ms≈15s 〔习题5.8〕
SRAM芯片的片选引脚有什么用途?假设在8088微处理器系统中,地址信号A19~A15输出01011时译码电路产生一个有效的片选信号,则该片选信号将占有多少主存容量?其地址范围是什么? 〔解答〕
主存容量:215=32KB,因低位地址信号的个数是15个。 地址范围:01011 000000000000000 ~ 01011 11111111111111,即58000H~5FFFFH。
〔习题5.11〕
什么是存储器芯片连接中的“位扩展”和“字扩展”?采用DRAM 21256(256K×1)构成512KB的RAM存储模块,需要多少个芯片,怎样进行位扩展和字扩展? 〔解答〕
位扩充:存储器芯片数据引脚个数小于主机数据信号个数时,利用多个存储器芯片在数据“位”方向的扩充。
15