设DS=0100H,
字节单元(01020H)=96H,
字节单元(01021H)=28H
MOV BX ,0020H ;BX=0020H
LEA BX ,[ BX ];BX=0020H
OR BX ,0;BX=0020H,CF=0
ADC BX ,[ BX ];BX=0020H+2896H+CF=28B6H
执行上述程序段后,
BX = 28B6H
CF = 0
OF = 0
next: in al,60h
test al,02h
jz next
这段代码是从60h端口读进数据,并测试第一位(实际是我们常说的第二位,因为计算机从0开始计数),如果是0,说明外设没有准备好,继续等待并测试,如果为1,说明外设已经准备好了,可以进行数据交换了,该程序段放在数据交换前。
《微机原理与接口技术》试题(第一套)
一、选择题(每题3分,共30分)
1.8288在8086/8088组成的计算机中的作用是( ② )。
① 数据缓冲器 ② 总线控制器 ③ 地址锁存器 ④ 提供系统时钟CLK
2.指令 MOV 0283H[BX][SI] , AX 中目标 *** 作数的寻址方式为( ② )。
① 寄存器寻址 ② 基址变址相对寻址 ③ 基址寻址 ④ 变址寻址
3.某存储单元的段基址为3806H,段内偏移地址为2A48H,该存储单元的物理地址为( ④ )。
① 4100H ② 3AA08H ③ 3B008H ④ 3AAA8H
3806
+2A48
=3AAA8H
4.某存储器芯片有地址线13根,数据线8根、该存储器芯片的存储容量为( ③ )。
① 15K×8 ② 32K×256 ③ 8K×8 ④ 32K×8
5.某存储器芯片容量为2K×1bit、若用它组成16K×8bit存储器组,所用芯片数以及用于组内寻址的地址线为( ② )。
① 32片、11根 ② 64片、14根 ③ 8片、 14根 ④ 16片、8根
6.“ADD AX,[BX+8]”的源 *** 作数在当前( ② )。
① 堆栈段 ② 数据段 ③ 代码段 ④ 程序段
7. DMAC 8237具有( ② ) 。
① 八个独立通道 ② 四个独立通道 ③ 二个独立通道 ④ 三个独立通道
DMAC8237A的主要性能:1、有4个独立的DMA通道,每个通道都充许开放或禁止DMA请求,都可以独立控制自动预置方式。2、具有三种基本的传输方式:单字节传送、数据块传送、请求传送。3、具有存储器到存储器的传送功能4、具有正常时序和压缩时序两种基本时序。5、8257A级联可扩充任意个DMA通道。6、有两种优先管理方式:固定优先级和循环优先级。7、有较高的数据传输速率。
8.可编程并行接口8255A具有( ① )
① 两个8位(A口、B口) 和两个4位(C口的高、低各4位) 并行输入输出端口。
② 两个8位(A口、C口) 和两个4位(B口的高、低各4位)并行输入输出端口。
③ 两个8位(B口、C口) 和两个4位(A口的高、低各4位) 并行输入输出端口。
④ 两个4位(A口、B口) 和一个8位(C口) 并行输入输出端口。
9.8259分别有( ③ )个 ICW和OCW。
① 2, 4 ② 4, 2 ③ 4, 3 ④ 3, 4
8259A有3个 *** 作命令字OCW1-OCW3,4个初始化命令字ICW1-ICW4。
10.8255A有3种工作方式,能工作与工作方式2的口有( ④ )。
① A口和B口 ②B口和C口 ③ B口 ④A口
二、判断题(每题2分,共10分)
1.数据总线是单向总线。( 错 )双向总线。
2.RAM是指只读存储器( 错 )RAM随机访问存储器。ROM只读存储器
3.CPU与外界交换信息的方式有两种:同步通信和异步通信。( 对 )
4.8259A具有8级优先权控制,通过级联可扩展至64级优先权控制。( 对 )
5.CPU的发展经历了4代,第三代用的是半导体管。( 错 )集成电路。
三、填空题(每空2分,共20分)
1.标志寄存器FR中下列标志位的名称以及为0和1时代表的意义分别为:
① CF :( 进位标志位;0:无进位 1:有进位);
② IF :(中断允许标志位;0:屏蔽外部的可屏蔽的中断请求;1:允许接受外部的可屏蔽的中断请求);
2.物理地址是指(存储器的实际地址,一个存储单元的物理地址是惟一);
3.微机中的ROM是( 只读存储器)。
5 CPU与接口之间传送信息的方式一般有四种,即: ( 无条件 )、( 查询式 )、( 中断方式 )、( DMA方式 )。
6 8086/8088 从总的说来有(内部)、( 外部 )两种中断。
7.总线根据其所处的位置不同,可以分为(片内总线)、(片总线)、(内总线)、(外总线)。
8.半导体存储器从使用功能上来说,可分为两类:(随机存取存储器RAM)和(只读存储器ROM)。
9.8253一个芯片上有(3)个独立的16位计数器通道,每个通道有(6)种工作方式。
10.MOV AX,1234H中源 *** 作数所使用的寻址方式为:(立即数寻址方式),MOV ES,AX源 *** 作数所采用的寻址方式:(寄存器寻址方式)。
四、简答题(每题5分,共计20分)
1.8086CPU由哪两个独立的工作单元组成它们的功能是什么
答:8086CPU由总线接口单元BIU和执行单元EU组成。其中, BIU负责与存储器接口,即8086CPU与存储器之间的信息传送,都是由BIU进行的。EU负责指令的执行
2.微机中的基本计时有哪几种?它们之间的有何关系?
答:微机中的基本计时有:指令周期;总线周期;时钟周期。一个指令周期由若干时钟周期或总线周期构成,一个基本的总线周期由四个时钟周期构成,时钟周期是最小的计时单位,它是微机主频的倒数。
3.8237在系统中起什么作用?请简述8237工作过程。
答:DMA控制作用,具有DMA请求、响应、传送和结束的管理能力。8237 工作过程分四个阶段:
(1) 请求:
(2) 响应:
(3) 传送:
(4) 结束:
4.试述中断处理过程?
答:中断处理过程为:中断请求、中断排队、中断响应、中断处理、中断返回。
五、程序分析题
在数据段中从0500H单元开始存放着100个带符号数(16位),要求把其中的正数传送至1000H开始的存储区;负数传送至1100H开始的存储区。(8分)
XOR DX,DX
MOV SI,0500H
MOV DI,1000H ;存正
MOV BX,1100H ;存负
MOV CX,100
L1:MOV AX,[SI]
TEST AX,8000H
JNZ L2 ;负转L2
MOV [DI],AX
INC DI
INC DI
JMP L3
L2: MOV [BX],AX
INC BX
INC BX
L3: INC SI
INC SI
LOOP L1
HLT
六、应用题(12分)
使用下列RAM芯片,组成所需的存储容量,各需多少RAM芯片?各需多少RAM芯片组?共需多少根寻址线?每块芯片需多少寻址线?
(1)512×4的芯片,组成8K×8的存储容量(32,16,13,9)
(2)4K×1的芯片,组成64K×8的存储容量(128,16,16,12)
(3)1K×8的芯片,组成32K×8的存储容量(32,32,15,10)
《微机原理与接口技术》试题
一、单项选择题(每小题1分,共15分)
1指令MOV AX,[3070H]中源 *** 作数的寻址方式为( )
A寄存器间接寻址
B立即寻址
C直接寻址
D变址寻址
2Reset信号有效后,8086CPU的启动地址( )
AFFFFFh
B0FFFFh
CFFFF0h
D00000h
3在8086CPU的标志寄存器中,控制标志位占( )
A3位
B9位
C4位
D16位
4堆栈的工作方式是( )
A先进先出
B随机读写
C只能读出不能写入
D后进先出
5CPU与外设间数据传送的控制方式有( )
A中断方式
B程序控制方式
CDMA方式
D以上三种都是
6设串行异步通信的数据格式是:1位停止位,7位数据位,1位校验位,1位起始位,若传输率
为2400位/秒,则每秒传输的最大字符个数为( )
A10个
B110个
C120个
D240个
7CPU与I/O设备间传送的信号有( )
A控制信息
B状态信息
C数据信息
D以上三种都有
8若传送率为1200,波特率因子n=16,则收、发时钟(RxCTxC)的频率为( )
A1MHz
B192KHz
C20KHz
D2400Hz
9在DMA方式下,外设数据输入到内存的路径是( )
A外设→CPU→DMAC→内存
B外设→DMAC→内存
C外设→存储器
D外设→数据总线→存储器
108255A中即可以作数据输入、输出端口,又可提供控制信息、状态信号的端口是( )
AB口
BA口
CC口
D以上三个端口均可以
118251A的方式控制字(即模式字)的作用是( )
A决定8251的数据格式
B决定8251的数据格式和传送方向
C决定8251何时收发
D以上都不对
12在数据传输率相同的情况下,同步字符串送的速度高于异步字符传输,其原因是( )
A字符间无间隔
B双方通信同步
C发生错误的概率少
D附加位信息总量少
13采用高速缓存的目的是( )
A提高主存速度
B提高总线传输率
C使CPU全速运行
D扩大可寻址空间
14CPU响应中断请求和响应DMA请求的本质区别是( )
A程序控制
B需要CPU干预
C响应中断时CPU仍控制总线而响应DMA时,让出总线
D速度快
15用三片8259A级数是( )
A24级
B22级
C23级
D21级
二、填空题(每空1分,共20分)
1微型计算机由______________________________________四部分组成。
28086CPU的9个标志位中,属状态标志的有______________________。
3总线周期是指_____________________________________。
4当_______________________________________________时,CPU便进入等待状态(Tw)
。
5当一个系统中包含的外设接口较多时,数据总线上需要有________________________
______以增强驱动能力。
6Reset信号到来后,8086CPU的特征是__________________________________________
。
7总线读 *** 作是指____________________________________。
8软件中断服务程序的入口地址是由__________________________产生的。
9串行通信数据传送的方向有___________________________三种。
10DMA控制器的基本组成包括___________________________。
11对8251A初始化时必须按照___________________________________的次序进行。
128259A的初始化命令字包括____________________________,其中________________
_是必须设置的。
13中断类型码为的中断向量一定存放在_____________个连续单元中,若其入口地址为
3040:2010,则这四个单元中的具体内容依次为________________________________________
。
148253芯片内包含有____个独立的计数通道,它有______种工作方式,若输入时钟CLK
1=1MHz,计数初值为500,BCD码计数方式,OUT1输出为方波,则初始化时该通道的控制字应为
___________________________________。
15用2k×8的SRAM芯片组成16K×16的存储器,共需SRAM芯片_______________片,片内
地址和产生片选信号的地址分别为___________________位。
三、名词解释(每小题3分,共15分)
1Cache
2中断向量
3总线主模块
4全双工
5堆栈
四、简答题(共25分)
1总线标准化的目的是什么?涉及哪些内容?列举1-2个标准系统总线。(5分)
2某系统中有一片8253,其四个端口地址为310H,312H,314H,316H,计数脉冲频率为
1MHz、BCD码计数,试编写输出频率为2KHz方波的初始化程序。(5分)
3在一个8086CPU和单片8259A组成的系统中,试说明:
(1)8086CPU在响应可屏蔽中断的条件是什么?
(2)8086CPU在响应中断过程中,连续执行两个INTA周期,其作用是?
(3)假如8259A已被编程,ICW2=0AH,若连接在8259A的IR3端的外设提出中断申请,它的
中断向量的存放地址是什么?(15分)
五、简单应用题(共25分)
1图1所示为某微机系统中用74LS138译码器产生各I/O接口新片的片选信号的电路,试指
出与Y1,Y3连接的芯片的端口地址范围。(5分)
2数/模(D/A)转换接口电路如图2所示,设8255A的端口地址为300H-303H,C口的工作于
方式0,试编写能从Vout端产生连续三角波的程序,程序应加适当注释。(10分)
3利用8251A实现与外设串行通信的控制程序如下,其中8251A的控制/状态口地址为2F
9H,数据口地址为2F8H,41H为字符A的ASCII码,要求:(10分)
(1)阅读此程序,加上适当注释并说明程序实现的功能;
(2)指出CPU与8251A见数据传送的控制方式。
START: MOV DX,2F9H
MOV AL,74H
OUT DX,AL
MOV AL,11H
OUT DX,AL
L1: MOV DX,2F9H
IN AL,DX
AND AL,01H
JZ L1
MOV DX,2F8H
MOV AL,41H
OUT DX,AL
HLT
18086 CPU通过______________寄存器和______________寄存器能准确找到指令代码。
28086中地址/数据线分时复用,为保证总线周期内地址稳定,应配置___________,为提高总线驱动能力,应配置_____________。
3类型码为_____________的中断所对应的中断向量存放在0000H:0058H开始的4个连续单元中,若这4个单元的内容分别为_________________,则相应的中断服务程序入口地址为5060H:7080H。
4CPU在指令的最后一个时钟周期检测INTR引脚,若测得INTR为___________且IF为_____________,则CPU在结束当前指令后响应中断请求。
5设8251A工作于异步方式,收发时钟频率为384KHz,波特率为2400。数据格式为7位数据位,1位停止位,偶校验,则8251A的方式字为_______________。
6CPU从I/O接口中的_____________获取外设的“准备就绪”或“忙/闲”状态信息。
7SRAM靠_____________存储信息,DRAM靠_____________存储信息,为保证DRAM中内容不丢失,需要进行_________________ *** 作。
8当存储器的读出时间大于CPU所要求的时间,为保证CPU与存储器的周期配合,就需要用____________信号,使CPU插入一个_____________状态。
9CPU响应可屏蔽中断的条件是_______________、______________、_______________。
108255A工作于方式1输入时,通过____________信号表示端口已准备好向CPU输入数据。
11设8253的计数器用于对外部事件记数,计满100后输出一跳变信号,若按BCD方式计数,则写入计数初值的指令为MOV AL,__________________和OUT PORT,AL。
12总线按其作用和位置可分为__________、___________、___________和___________四种,RS-232C属于__________总线。
13中断控制器8259A中的中断屏蔽寄存器IMR的作用是____________________。
14DMA控制器的传送方式有__________、___________、__________和_________四种。
二、单项选择题(每小题1分,共15分)
15将微处理器、内存储器及I/O接口连接起来的总线是( )
A片总线 B外总线
C系统总线 D局部总线
16连续启动两次独立的存储器 *** 作之间的最小间隔叫( )
A存取时间 B读周期
C写周期 D存取周期
17连接到64000h-6FFFFh地址范围上的存储器是用8k×8 RAM芯片构成的,该芯片要______片。( )
A8片 B6片
C10片 D12片
18RESET信号有效后,8086 CPU执行的第一条指令地址为( )
A00000H BFFFFFH
CFFFF0H D0FFFFH
19要管理64级可屏蔽中断,需要级联的8259A芯片数为( )
A4片 B8片
C10片 D9片
20异步串行通信中,收发双方必须保持( )
A收发时钟相同 B停止位相同
C数据格式和波特率相同 D以上都正确
218253作为定时器和计数器时( )
A使用的计数方式相同 B工作方式不同
C实质相同 D输出定时信号不同
22对可编程接口芯片进行读/写 *** 作的必要条件是( )
ARD=0 BWR=0
CRD=0或WR=0 DCS=0
23在DMA方式下,CPU与总线的关系是( )
A只能控制地址总线 B相互成隔离状态
C只能控制数据线 D相互成短接状态
24当8255A工作在方式1输出时,通知外设将数据取走的信号是( )
AACK BINTE
COBF DIBF
25在数据传输率相同的情况下,同步传输率高于异步传输速率的原因是( )
A附加的冗余信息量少 B发生错误的概率小
C字符或组成传送,间隔少 D由于采用CRC循环码校验
26异步传送中,CPU了解8251A是否接收好一个字符数据的方法是( )
ACPU响应8251A的中断请求 BCPU通过查询请求信号RTS
CCPU通过程序查询RxD接收线状态 DCPU通过程序查询RxRDY信号状态
27对存储器访问时,地址线有效和数据线有效的时间关系应该是( )
A数据线较先有效 B二者同时有效
C地址线较先有效 D同时高电平
288255A引脚信号WR=0,CS=0,A1=1,A0=1时,表示( )
ACPU向数据口写数据 BCPU向控制口送控制字
CCPU读8255A控制口 D无效 *** 作
298253的计数器的最大计数初值是( )
A65536 BFFFFH
CFFF0H D0000H三、名词解释(每小题2分,共10分)
30总线周期
31动态刷新
32波特率
33总线仲裁
34USB四、简答题(每小题4分,共16分)
35简述CPU与外设间数据传送的控制方式有哪几种?各自的优缺点?
36简述8259A配合CPU完成哪些主要任务,其内部的中断服务寄存器的作用?
37某存储器片选译码电路与地址线和数据线的连接如图所示。
(1)写出该译码电路最多可配置多少KB的容量范围?
(2)写出该译码器每个输出(y0-y7)线可配置多少KB的容量范围。
(3)若A15已设定为高有效(A15=1),A15应如何与G2a相连接。
38当8253的定时值超过最大值时应如何处理?写出两种实现方案。
五、简单应用题(本题共32分)
39用DAC0832与8086CPU直接相连设计一D/A转换电路,并编程使之产生呈负向增长的锯齿波,并且锯齿波周期可调,DAC0832的口地址为300H。(10分)
40设8251A工作于异步方式,波特率为2400,收发时钟频率为1536KHz,异步数据格式为:7位数据位、1位停止位、偶校验,允许接收,允许发送,错误标志复位,试编写8251A的初始化程序和以查询方式从8251A接收100个字符存入首地址为3000H的数据区的数据接收程序段。主要语句应加注释,8251A口地址为200H,201H(12分)
41(10分)用8255A作打印机接口的硬件连接和驱动程序如下所示,8255A的入口地址为80H-83H,阅读此程序回答下列问题:
(1)所采用的数据控制方式?
(2)所传送的字节数?
(3)8255A的工作方式?
MOV AL,081H
OUT 083H,AL
MOV BX,3000H
MOV CX,64H
MOV AL,0DH
OUT 083H,AL
STT: IN AL,082H
AND AL,08H
JNZ STT
MOV AL,[BX]
OUT 080H,AL
MOV AL,0CH
OUT 083H,AL
NOP
NOP
MOV AL,0DH
OUT 083H,AL
INC BX
DEX CX
JNZ STT
HLT六、计算题(每小题4分,共12分)
428253的计数器2工作于方式2,其计数时钟CLK2,为100KHz,输出信号OUT2作定时中断申请,定时间隔为8ms,试计算其计数初值N?
43若8251A的异步方式字为7AH,则发送的字符格式如何?为使接收和发送的波特率分别为600b/s和2400b/s,则收发时钟(RxC和TxC)的频率分别应为多少。
44一个具有14位地址8位数据线的存储器,能存储多少字节数据,若由8k×4的芯片组成,共需多少芯片?
data segment //数据段定义
x db 4
y db 3
z db
data ends //数据段结束
code segment //代码段
assume cs:code,ds:data //代码段对应cs栈,数据段对应ds栈
start: mov ax,data //数据段的偏移地址送ax
mov ds,ax //ax中存放的数据段偏移地址送到ds栈,可理解为同步
mov al,x //数据x送入AX低8位寄存器AL
add al,y //数据y和数据x相加后覆盖AX低8位寄存器AL中的内容
mov z,al //相加结果赋值给z
add z,30h //结果z加上30H(转化成ASCII码)
mov dl,z //调用DOS中断在屏幕上显示
mov ah,2
int 21h
mov ah,4ch
int 21h
code ends //代码结束
end start
为什么指令add z,30h能实现将结果转换成ASC码?
答:这个你要看ASCII码表,注意到数字那一栏,0的ASCII码是30H,1是31H,依此类推。
ADD和ADC均为加法指令,功能有什么区别?
答:ADD是不带进位将两者相加,ADC是带进位相加。具体还是自己做做实验。
微机原理一定要动手实验,理解各个指令的作用,相同和不同。才能学好。光听老师讲,死记硬背没有用。
1、用寄存器BX和位移量COUNT的寄存器相对寻址方式,把存储器中的一个字与AX寄存器之内容相加,并把结果保存在存储器单元中。
解:ADD AX , [BX+COUNT]
MOV [BX+COUNT] , AX
2、将AX寄存器的内容减去CX寄存器的内容,并把结果保存在AX寄存器中。
解:SUB AX ,CX
3、下列程序的功能是:利用DOS的功能调用,显示一串字符;通过填空将下列程序补充完整。
STACK SEGMENT SYACK
DB 256 DUP ()
TOP LABEL WORD
(STACK ENDS )
DATA SEGMENT
BUF DB ‘ I WISH YOU SUCCESS! $ ‘
DATA ENDS
CODE SEGEMENT
ASSUME (CS:CODE,DS:DATA,SS:STACK)
START: MOV AX,( DATA )
MOV DS,( AX )
MOV AX,( STACK )
MOV SS,AX
LEA SP, TOP
LEA DX,( BUF )
MOV AH,9
INT ( 21H )
(MOV AH, 4CH )
INT 21H
CODE ENDS
END START
; 微机原理程序汇编语言,鸡兔同笼 H F
; x+y=h
; 2x+4y=f
; y = (f-2h)/2 = f/2-h
; x = h-y = 2h-f/2
CODE SEGMENT
ASSUME CS:CODE
H DW
F DW
X DW
Y DW
MSG DB 'please input H,F=$'
MSG2 DB 'chicken,rabbit=$'
START: PUSH CS
POP DS
PUSH CS
POP ES
LEA DX,MSG
MOV AH,9
INT 21H
CALL INPUTNUM
CALL LFCR
MOV AX,WORD PTR ARRAY
MOV H,AX
MOV AX,WORD PTR ARRAY+2
MOV F,AX
SHR F,1
JC START ; 不能整除转
MOV AX,F
SUB AX,H
JS START ; 不够相减转
MOV Y,AX
MOV AX,H
SHL AX,1
SUB AX,F
JS START ; 不够相减转
MOV X,AX
LEA DX,MSG2
MOV AH,9
INT 21H
MOV AX,X
CALL DSPAX
MOV AX,Y
CALL DSPAX
MOV AH,4CH
INT 21H
;===============================================
; 键盘输入数值数组子程序(数组名为array,元素个数存放在num中)
INPUTNUM PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSH BP
PUSHF
; 输入的数据以一个空格分隔,以回车符结束输入
LEA DI,CS:ARRAY
MOV WORD PTR CS:NUM,0
STIN:
MOV AX,0
PUSH AX
AGAIN1:
MOV AH,0CH
MOV AL,1
INT 21H
MOV BYTE PTR CS:CHAR,AL
CMP AL,13
JE LINE0
CMP AL,' '
JE LINE0
SUB AL,30H
MOV AH,0
MOV SI,AX
POP AX
MOV CL,10
MOV CH,0
MUL CX
ADD AX,SI
PUSH AX
JMP AGAIN1
LINE0:
POP AX
MOV WORD PTR CS:[DI],AX
INC WORD PTR CS:NUM
CMP BYTE PTR CS:CHAR,13
JE STINEND
INC DI
INC DI
JMP STIN
STINEND:
POPF
POP BP
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
RET
ARRAY DW 200 DUP(0)
NUM DW 0
CHAR DB
INPUTNUM ENDP
;=====================================
DSPAXS PROC NEAR
PUSH AX
TEST AX,8000H
JNS @DSPAXS1
PUSH AX
PUSH DX
MOV AH,2
MOV DL,'-'
INT 21H
POP DX
POP AX
NEG AX
@DSPAXS1:
CALL DSPAX
POP AX
RET
DSPAXS ENDP
;===================================
DSPAX PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSHF
XOR CX,CX
MOV BX,10
@DSPAX1:
XOR DX,DX
DIV BX
INC CX
OR DX,30H
PUSH DX
CMP AX,0
JNE @DSPAX1
MOV AH,2
@DISPAX2:
POP DX
INT 21H
LOOP @DISPAX2
POPF
MOV DL,32
INT 21H
POP DX
POP CX
POP BX
POP AX
RET
DSPAX ENDP
;===================================
LFCR PROC NEAR
PUSH AX
PUSH DX
MOV AH,2
MOV DL,13
INT 21H
MOV DL,10
INT 21H
POP DX
POP AX
RET
LFCR ENDP
;=====================================
CODE ENDS
END START
DATA SEGMENT ;定义数据段
BUF DB -3,1,2 ;定义变量
BUF1 DB 1000 DUP() ;预留1000字节的空间
DATA ENDS ;数据段定义结束
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,DS:DATA ;段寄存器关联说明
START: ;代码段第一条指令从这里开始
MOV AX,DATA ;数据段段址→ax
MOV DS,AX ;ax→ds,给数据段段寄存器赋值
LEA SI,BUF ;变量BUF有效地址→SI
MOV CX,1000 ;变量BUF元素个数→CX
MOV AX,[SI] ;变量BUF的第一个字数据→AX
LP: CMP AL,0 ;AL<0?
JL NEXT ;是,转NEXT处执行
INC SI ;变量BUF元素地址增1
DEC CL ;CL-1→CL
JNZ LP ;CL不等于0,转LP处执行循环体
NEXT: MOV BUF1,AL ;AL送变量BUF1保存
MOV AH,4CH ;结束程序
INT 21H ;dos功能调用
CODE ENDS ;代码段定义结束
END START ;编译到此结束
程序段功能: 从变量BUF的1000个有符号字节数种找到第一个负数,把这个负数存于BUF1单元。
从程序段来看,这段程序的编者必是初学汇编语言。提两点建议:
1、有一处错误:
DEC CL
从程序功能来看,此处必须要用:
DEC CX
因为你要从1000个有符号字节数中找出第一个负数,而8位计数器CL能存的最大无符号数是255,那么用指令:
DEC CL
实际上是只从前255个元素中查找,而漏掉了后面的745个元素。如果前255个元素中没有负数,执行结果必然是错误的。
2、Intel 8086/8088体系结构的内存管理是分段式的,教科书及老师都习惯于这种模式,这是正确的。但我们作为初学,只是练习,无论是数据量还是代码量,都很有限,没有必要分这个段、那个段的,完全可以在一个段里进行,即把DS、ES及SS,统统地设置成与代码段同段。下面,以另一种方式来实现这个功能,仅供参考。
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
BUF DB -3,1,2
Element equ ($-BUF)/type BUF ;元素个数
BUF1 DB
START:push cs
pop ds
push cs
pop es
lea si,BUF
mov cx,Elements
LP: lodsb
cmp al,0
jl $+4
loop LP
MOV BUF1,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
不知道对楼主有没有用。。。。
以上就是关于微机原理,请大佬指点!全部的内容,包括:微机原理,请大佬指点!、微机原理中 读端口的指令、求份微机原理与接口技术的试题(含答案)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)