复习内容.docx

上传人:b****4 文档编号:24453473 上传时间:2023-05-27 格式:DOCX 页数:23 大小:109.40KB
下载 相关 举报
复习内容.docx_第1页
第1页 / 共23页
复习内容.docx_第2页
第2页 / 共23页
复习内容.docx_第3页
第3页 / 共23页
复习内容.docx_第4页
第4页 / 共23页
复习内容.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

复习内容.docx

《复习内容.docx》由会员分享,可在线阅读,更多相关《复习内容.docx(23页珍藏版)》请在冰豆网上搜索。

复习内容.docx

复习内容

写出下述指令中源操作数的寻址方式(每小题2分,共10分)

1.MOVAX,100

2.ADDAX,BX

3.SUBAX,[100H]

4.CMPAX,[BX]

5.MOVAL,[SI+10]

6.movcx,100h

7.adddx,bx

8.moval,[100h]

9.movcx,[di]

10.andcl,[di+10]

11.movcx,100h

12.adddx,bx

13.moval,[100h]

14.movcx,[di]

15.andcl,[di+10]

16.movax,100h

17.addax,bx

18.movbl,[100h]

19.movcx,[si]

20.andal,[si+10]

21.movax,100h

22.addax,bx

23.movbl,[100h]

24.movcx,[si]

25.andal,[si+10]

26.movcx,100h

27.adddx,bx

28.moval,[100h]

29.movcx,[di]

30.andcl,[di+10]

31.ADDAX,10

32.MOVAX,BX

33.SUBAL,[SI]

34.MOVAL,[SI+10]

35.SUBAL,[10H]

36.movax,1000h

37.addax,bx

38.movbl,[100h]

39.movcx,[di]

40.andal,[di+10]

三.下述指令中,是否有错,有错则改正之(每小题2分,共10分)

1.MOVSI,ALN

2.ADDAL,100HN

3.MOVAL,[SI+DI]N

4.MOV[BX],[SI]N

5.MOV100H,BLN

6.moval,100Y

7.addax,clN

8.movax,[1001]Y

9.mov[si+di],100N

10.movax,[cx]N

11.moval,100Y

12.addax,clN

13.moval,[100]Y

14.mov[si+bx],100N

15.movax,[dx]N

16.moval,100Y

17.addax,cl

18.moval,[100]

19.mov[si+bx],100

20.movax,[dx]

21.moval,100

22.addax,cl

23.movax,[1001]

24.mov[si+di],100

25.movax,[cx]N

26.SUB[3000H],[BX]N

27.OUT180H,AXN

28.CMPAL,[SI][DI]N

29.PUSHBLN

30.MOVCS,2000HN

31.moval,100HN

32.addax,cxY

33.moval,[100]Y

34.mov[si+bx],100N

35.movax,[dx]N

 

1.已知数据段的定义如下,现要求把BUF数据区中的十六进制,转换为压缩的BCD码,百位存放在RES单元中,十位与个位存放在RES1单元中,编程实现之。

DATASEGMENT

BUFDB0ABH

RESDB?

RES1DB?

DATAENDS

答:

DATASEGMENT

BUFDB0ABH

RESDB?

RES1DB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

BEGIN:

MOVAX,DATA

MOVDS,AX

Moval,buf

Movah,0

Movbl,100

Divbl;百位值在AL中,十位个位的值在AH中

Movres,al

Moval,ah

Movah,0;此时十位个位的值在AX中

Movbl,10

Divbl;十位的值在AL中,个位的值在AH中

Movcl,4

Shlal,cl

Addal,ah

Movres1,al

MOVAH,4CH

INT21H

CODEENDS

ENDBEGIN

2.已知在BUF这个存贮区单元中,存放着一个十六进制数,现要求把该数在屏幕上显示出来,编程实现之.

datasegment

BUFdb0A9H

dataends

codesegment

assigncs:

code,ds:

data

start:

movax,data

movds,ax

movdldat

moval,dl

movcl,4

shrdl,cl

cmpdl,09

jakk1

jbekk2

kk2:

adddl,30h

movah,02h

int21h

jmpk1

kk1:

subdl,0aH

adddl,’A”

movah,2

int21h

k1:

movdl,al

anddl,0fh

cmpdl,09

jakkk1

jbekkk2

kkk2:

adddl,30h

movah,02h

int21h

jmpk2

kkk1:

subdl,0aH

adddl,’A”

movah,2

int21h

k2:

movah,4ch

int21h

codeends

endstart

3.试统计AX中1的个数,其值存入BL中,编程实现之。

CODESEGMENT

ASSUMECS:

CODE

BEGIN:

MOVCX,16

MOVBL,0

MOVDX,01H

K1:

TESTAX,DX

JNZKK1

JNKK2

KK1:

INCBL

JMPK2

KK2:

JMPK2

K2:

SHLDX,1

DECCX

JNZK1

MOVAH,4CH

INT21H

CODEENDS

ENDBEGIN;整个程序的结束

4.数据段的定义如下。

已知函数的功能为Y=5*X+7(X偶数)

Y=3*X-8(X奇数)

且X的值存放在BUF单元中,结果Y存放入RES单元中,编程实现其功能,要求写出完整的源程序。

(15分)

DASEGMENT

BUFDB57

RESDW?

DAENDS

答:

DASEGMENT

BUFDB57

RESDW?

DAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DA

BEGIN:

MOVAX,DA

MOVDS,AX

MOVAL,BUF

TSETAL,01H

JAEK1;为奇数则到K1处执行

MOVBL,5

MULBL

ADDAX,7

JMPK2

K1:

MOVBL,3

IMULBL

SUBAX,8

K2:

MOVRES,AX

MOVAH,4CH

INT21H

CODEENDS

ENDBEGIN

5.已知数据段的定义如下,现在BUF数据区中有若干个有符号的十六进制,该数据区以$作为结束标志,现要求求该数据区中的最大数,并把该数存放在RES单元中,编程实现之。

DASEGMENT

BUFDB0ABH,1,2,3,5,’ueuu87786KHH$’

RESDB?

DAENDS

答:

DASEGMENT

BUFDB0ABH,1,2,3,5,’ueuu87786KHH$’

RESDB?

DAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DA

BEGIN:

MOVAX,DA

MOVDS,AX

LEASI,BUF

MOVCX,N

MOVAL,[SI];第一个数送入AL寄存器,且为MAX

K1:

MOVBL,[SI]

CMPBL,AL

JGEK2;若所取的数大于MAX则跳转到标号K2处。

JMPK3

K2:

MOVAL,BL;进行交换

K3:

INCSI

LOOPK1

MOVRES,AL;结果送入RES单元中

MOVAH,4CH

INT21H

CODEENDS

ENDBEGIN;整个程序的结束

6.数据段的定义如下。

已知在从BUF开始的一段存贮区单元中,存放有若干个数据,该数据以’*’作为结束标志,试统计其中奇数的和和偶数的和,并把奇数和结果存放于RES存贮区单元中,把偶数和结果存放于RES1存贮区单元中,编程实现其功能,要求写出完整的源程序。

DASEGMENT

BUFDB1,2,3,4,5,6,7,8,9,-10,-13,29,31,20,‘*’

RESDB?

RES1DB?

DAENDS

答:

Datasegment

BUFDB1,2,3,4,5,6,7,8,9,-10,-13,29,31,20,‘*’

RESDB?

RES1DB?

Enddata

Codesegment

Assumecs:

code,ds:

data

Begin:

movax,data

Movds,ax

Leasi,buf

Xorbx,bx

Xorcx,cx

Lp:

moval,[si]

Cmpal,’*’

Jenn

Andal,01

Jzkk

Addcl,[si]

Adccx,0

Jmpmm

Kk:

addbl,[si]

Adcbx,0

Mm:

incsi

Jmplp

Nn:

movres1,cx

Movres,bx

Movah,4ch

Int21h

Codeends

Endbegin

7.已知数据段的定义如下,现在BUF数据区中有若干个有符号的十六进制,现要求把该数据区中的所有小写字母改为大写字母,存放与原位置,编程实现之。

DASEGMENT

BUFDB0ABH,1,2,3,5,’ueuu87786KHH$’

RESDB?

DAENDS

答:

DASEGMENT

BUFDB0ABH,1,2,3,5,’ueuu87786KHH$’

RESDB?

DAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DA

BEGIN:

MOVAX,DA

MOVDS,AX

LEASI,BUF

MOVCX,N

K1:

MOVBL,[SI]

CMPBL,‘a’

JAEKK1

JBKK2

KK1:

CMPBL,‘z’

JBEKK3

JAKK2

KK3:

SUBBL,10

ADDBL,‘A’

MOV[SI],BL

JMPKK2

KK2:

INCSI

DECCX

JNZK1

MOVAH,4CH

INT21H

CODEENDS

ENDBEGIN;整个程序的结束

接口电路

1、设8253A的端口地址为0FFF0H~0FFF3H,已知输入的时钟CLK为1KHz,要求产生25Hz的占空比为50%方波输出,试对8253A进行初始化编程,且画出连接关系.(10分)

CLK

解:

n=5*103/25=200

CLK0

计数器0的分频系数为200占空比为50%均采用方式3

Moval,00110111b

OUT0

Movdx,0fff3h

Outdx,al

Movdx,0fff0h

CLK1

Moval,00h

Outdx,al

OUT

OUT1

Moval,2h

+5V

GATE0

Outdx,al

GATE1

;上述为计数器0初始化

Hlt

2、电路如下图所示,在图中地址总线的A0、A1接到8255A的A0、A1,地址总线的A5、A6、A2、A3、A4、A7(此经过一个反向器接到或门)通过或门接到8255A的片选端(CS低电平有效),当K1闭合时,发光二极管L1点亮,K1断开时发光二极管L1熄灭;当K2闭合时,发光二极管L2点亮,K2断开时发光二极管L2熄灭(不允许二个开关同时闭合);编程完成上述功能,并写出PA、PB、PC、控制口的地址。

(15分)

 

由图中可知,其8255A的地址为00H、01H、02H、03H

PA口工作在方式0,输入方式;PB工作在方式0,输出方式

其控制字为10010000B

Moval,90h

Out03h,al

K1:

inal,00h

Cmpal,0feh

Jzkk1;代表检测到K1键按下,其对应的键值为11111110B

Cmpal,0fdh

Jzkk2;代表检测到K1键按下,其对应的键值为11111101B

Moval,00h;不是上述二种情况,则灯灭

Out01h,al

Jmpk1

Kk1:

moval,80h;L1灯点亮,此时PB的值为10000000B

Out01h,al

Jmpk1

Kk2:

moval,40h;L1灯点亮,此时PB的值为01000000B

Out01h,al

Jmpk1

3、设8255A的端口地址为:

0C0H、0C1H、0C2H、0C3H,现要求A端口采用方式1接8位二进制输入,对端口B采用工作方式0,接八只发光二极管,编写程序实现把A端口读入数据在B端口输出.(15分)

10110000B

Moval,0b0h

Out0c3h,al

Inal,0c0h

Out0c1h,al

hlt

4、已知某8253占用I/O空间地址为320H~323H,如图所示,输入其CKL1端的脉冲频率为1MHz,要求用8253连续产生10秒的定时信号。

分析:

8253的一个通道的最大计数范围为65536,本例中要求输出10秒定时信号,则计数初值N=10/10-6=107,超过了8253一个通道的最大计数值,此时可以使用2个8253通道级连方式来实现。

若级连前2个通道的初值为N1和N2,则级连后作为一个整体的计数值为N=N1×N2。

 

设计数器初值N1=500=1F4H,N2=20000=4E20H,使用方式2,二进制计数,则通道1、2的初始化程序如下:

MOVDX,323H

MOVAL,74H

;01110100B,通道1,写入16位初值,方式2,二进制计数

OUTDX,AL

;写入通道1方式字

MOVDX,321H

MOVAL,0F4H

OUTDX,AL

;写入初值500的低8位入通道1

MOVAL,01H

OUTDX,AL

;写入初值500的高8位入通道1

MOVDX,323H

MOVAL,0B4H

;10110100B,通道2,写入16位初值,方式2,二进制计数

OUTDX,AL

;写入通道2方式字

MOVDX,322H

MOVAL,20H

OUTDX,AL

;写入通道2初值20000的低8位

MOVAL,4EH

OUTDX,AL

;写入通道2初值20000的高8位

5、设某应用系统中,系统提供一个频率为10kHz的时钟信号,要求每隔100ms采集一次数据。

在系统中,采用8253定时器的通道0来实现这一要求。

将8253芯片的CLK0接到系统的10kHz时钟上,OUT0输出接到CPU的中断请求线上,8253的端口地址为10H~13H,如图所示。

 

确定计数初值

已知fCLK0=10kHz,则TCLK0=0.1ms,所以,计数初值

N=TOUT0/TCLK0=100ms/0.1ms=1000=03E8H

初始化编程

根据以上要求,可确定8253通道0的方式控制字为00110100B,即34H。

初始化程序段如下:

MOVAL,34H;通道0,16位计数,方式2,二进制计数

OUT13H,AL;写入方式控制字到控制字寄存器

MOVAL,0E8H;计数初值低8位

OUT10H,AL;写入计数初值低8位到通道0

MOVAL,03H;计数初值高8位

OUT10H,AL;写入计数初值高8位到通道0

6、通过PC机系统总线在外部扩展一个8253,利用其通道0记录外部事件的发生次数,每输入一个高脉冲表示事件发生1次。

当事件发生100次后就向CPU提出中断请求(边沿触发),假设8253片选信号的I/O地址范围为200H~203H,如图根据要求,可以选择方式0来实现,计数初值N=100。

8253初始化程序段如下:

MOVDX,203H;设置方式控制字地址

MOVAL,10H;设定通道0为工作方式0,二进制计数,只写入低字节计数值

OUTDX,AL

MOVDX,200H;设置计数器通道0的地址

MOVAL,64H;计数初值为100

OUTDX,AL

7、8255A作为连接打印机的接口,工作于方式0,如下图所示。

设8255A的端口地址为:

A端口:

00DOH书B端口:

00D2HC端口:

00D4H

控制口:

00D6H

使用查询方式输出,待输出的字符在CL中,具体程序段如下

PP:

MOVAL,81H ;控制字,使A组、B组均为方式0,A端口为输出,PC7~PC4输出,PC3~PC0输入

 OUT0D6H,AL;写入控制口

 MOV AL,0DH ;用C端口置1/置0方式使PC6为1,即STB初始状态为高电平

 OUT0D6H,AL  ;写入控制口

LPST:

INAL,0D4H  ;读端口C的值

 TEST AL,04H  ;测试PC2位

 JNZ LPST   ;如不为0,说明BUSY信号为1,即打印机处于忙状态,故等待

 MOV AL,CL ;如不忙,则把CL中字符送端口A

 MOV AL,0CH  ;用置1/置0方式使PC6为0

 OUT 0D6H,AL;即向STB输出负脉冲

 INC AL 

 OUT0D6H,AL ;再使STB为1

 HLT

8、基本输入输出应用举例

已知8255A的地址为0F0H、0F2H、0F4H、0F6H

MOVDX,0F6H

MOVAL,10010000B

OUTDX,AL

TEST-IT:

MOVDX,0F0H

INAL,DX

MOVDX,0F2H

OUTDX,AL

JMPTEST-IT

9、以查询方式打印“THISISTHETEST!

Datasegment

BUFDB‘THISISTHETEST!

N=$-BUF

Dataends

MOVDX,303H

MOVAL,10010000B

OUTDX,AL

MOVCX,N

LEABX,MESS-1

XX1:

MOVDX,300H

XX:

INAL,DX

TESTAL,00001000B

JNZXX

MOVAL,[BX]

MOVDX,301H

OUTDX,AL

MOVDX,303H

MOVAL,00001000B

OUTDX,AL

MOVAL,00001001B

OUTDX,AL

INCBX

LOOPXX1

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1