第四章80x86汇编语言编程1 .伪指令语句与硬指令语句的本质区别是什么? 伪指令有什么主要作用? a (不同)疑似命令句是可执行的语句,硬命令句是CPU可执行的语句。 伪指令语句的主要作用是提供汇编程序的说明,在汇编过程中只告诉汇编程序如何汇编。 假设MYWORD是字变量,MYBYTE1和MYBYTE2是双字节变量,以下语句说明了错误及其原因: 1.MOV BYTE PTR[BX],1000答:数据类型不一致。 目标地址单元以字节为单位,1000大于255。 不能保管。 2.MOV BX,OFFSET[SI]答: OFFSET后面只能加上标识符。 3.CMP MYBYTE1,MYBYTE2答: CMP的两个操作数不能同时存储在内存中。 4.MOV AL,MYBYTE1 MYBYTE2答:运算符只能对常量操作,不能对变量操作。 5.SUB AL,MYWORD答:数据类型不一致。 AL是8位变量,MYWORD是16位变量。 6.JNZ MYWORD答: MYWORD是一个变量,存储在该单元格中的是操作数,不能用作跳转的入口。 19 .写将段定义格式简化的源程序1 .定义常数NUM,其值为5; 数据段中定义了字数组变量DATALIST,前五个字单元以-1、0、2、5、4的顺序存储,最后一个单元的初始值不确定。 2 .代码段的程序以DATALIST的最后一个字为单位存储DATALIST开头的NUM个数的累计加法。 model small.stack.datanum equ5datalist dw-1,0,2,5,4, code.startup mov bx、offset datalist mov CX、num xor ax、axagain: add ax、[bx]IncbxIncbxloopagain27.ax和SI是有符号的数,DX和sssi
)2) AXSI时,转移到GREATER并执行。
)3) CX=0时,转移到ZERO执行
)4)如果在AX-SI上发生溢出,则转移到OVERFLOW并执行。
(5)在SIAX的情况下,转移至LESS_EQ并执行。
(6) DIDX时,转移到BELOW_EQ并执行。
答:
)1) CMP DX,DI JA ABOVE
)2) CMP AX,SI JG GREATER
)3) CMP CX,0 JE ZERO
)4) CMP AX,SI
JO OVERFLOW
)5) CMP AX,SI
JGE LESS_EQ
)6) CMP DX,DI
JAE BELOW_EQ
33 .已知用于显示led数码管的代码表是LEDTABLE DB 0C0H、0FGH、0A4H、0B0H、99H、92H、82H、0F8H
DB 80H、90H、88H、83H、0C6H、0C1 H、86H、8EH
它依次表示09AF这16个数字的显示代码。 将LEDNUM的数字(09,AF )转换为对应的LED显示代码的程序安装
. model small.stack 256.dataledtabledb 0c 0h、0a4h、0b0h、99h、92h、82h.0f8h DB 80h、90h、88h、83h、0c6h、0clh、86h 针对al对应的LED显示代码exit 0第五章存储器技术Cache的地址映射方式进行简单说明。 Cache的替换算法主要是什么? 为什么要替换? 高速缓冲存储器的地址映射主要有以下三种方法。 1、直接映像2、全关联映像3、组关联映像1 .最近最小使用策略。 2 .最不频繁地使用策略。 3 .随机置换策略。 缓存交换算法是影响代理缓存系统性能的重要因素,优秀的缓存交换算法会产生较高的命中率。 假设有一个具有9.20位地址和16位字长的存储器。 1这个内存可以存储多少字节的信息? 2^20 x 16 b=16Mb
2如果此存储由32k x8b sarm芯片组成,需要多少? 2^24b 2^15*8=2^6=64片
3选择芯片需要多少位地址? 64=2^6,所以芯片选择需要6位地址。
第六章1 .接口的概念和功能接口是与外围设备之间的连接部件,完成与外围设备之间的信息传输。 也包括辅助动作的外围电路。
界面功能
1 .执行命令的职能
2 .恢复外围设备状态的功能
3 .数据缓冲功能
4 .信号转换功能
5 .机器选择功能:
6 .数据宽度和数据格式之间的切换
换功能 2.简述独立编址或统一编址的接口的区别和各自的优缺点。1.独立编址(专用的I/O端口编址)----存储器和I/O端口在两个独立的地址空间中
(1)优点:I/O端口的地址码较短,译码电路简单,存储器同I/O端口的操作指令不同,程序比较清晰;存储器和I/O端口的控制结构相互独立,可以分别设计
(2)缺点:需要有专用的I/O指令,程序设计的灵活性较差
2.统一编址(存储器映像编址)----存储器和I/O端口共用统一的地址空间,当一个地址空间分配给I/O端口以后,存储器就不能再占有这一部分的地址空间
(1)优点:不需要专用的I/O指令,任何对存储器数据进行操作的指令都可用于I/O端口的数据操作,程序设计比较灵活;由于I/O端口的地址空间是内存空间的一部分,这样,I/O端口的地址空间可怕孤独的帽子小,从而使外设的数量几乎不受限制
(2)缺点:I/O端口占用了内存空间的一部分,影响了系统的内存容量;访问I/O端口也要同访问内存一样,由于内存地址较长,导致执行时间增加
解:根据题目要求可知,计数器0 (CNTO)工作于方式3,计数器1 (CNT1) 和计数器2 (CNT2)工作于方式2。时钟频率2MHz,即周期为0.5us,从而得出各计数器的计数初值分别为:
CNTO:
10us/0.5us= 20
CNT1:
1 ms/0.5us = 2000
CNT2:
1s/0.5us= 2 X 1000000
显然,计数器2的计数初值已超出了16位数的表达范围,需经过一次中间 分频,可将OUT1端的输出脉冲作为计数器2的时钟频率。这样,CNT2的计数初值就等于1s/1ms= 1000。线路连接如图所示。
8253的初始化程序如下:
MOV DX, 0D0D3HMOV AL, 16H ;计数器0,低8位计数,方式3OUT DX, ALMOV AL, 74H ;计数器1,双字节计数,方式2OUT DX, ALMOV AL, 0B4H ;计数器2,双字节计数,方式2OUT DX, ALMOV DX, 0D0D0HMOV AL, 20 ;送计数器0的计数初值OUT DX, ALMOV DX, 0D0D1HMOV AX, 2000 ;送计数器1的计数初值OUT DX, ALMOV AL, AHOUT DX, ALMOV DX,0D0D2HMOV AX, 1000 ;送计数器2的计数初值OUT DX, ALMOV AL, AHOUT DX, AL 6.某系统使用8254的通道0作为计数器,计满1000时,向CPU发送中断请求,试编写初始化程序(端口地址自设)。解:
设端口地址为80H~83H
解:波特率表示每秒钟传送二进制的位数。每秒钟能传输的字符个数为9600/10=960
16.假设8255A的端口地址为00C0H~00C6H,按下面要求编写初始化程序。(1)对8255A设置工作方式,A端口工作在方式1,输入; B端口工作在方式0,输出;C端口的高4位配合A端口工作,C端口的低4位为方式0,输入。
(2)用置0/置1方式直接对PC6置1,对PC4置0
利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU,独立完成数据传送。
DMA是直接存取方式。是在存储器与输入输出设备间直接传送数据,提高传输效率,是一种完全由硬件完成输入输出操作的方式。