微型计算机原理与接口技术测试题.docx

上传人:b****5 文档编号:8397648 上传时间:2023-01-31 格式:DOCX 页数:16 大小:17.89KB
下载 相关 举报
微型计算机原理与接口技术测试题.docx_第1页
第1页 / 共16页
微型计算机原理与接口技术测试题.docx_第2页
第2页 / 共16页
微型计算机原理与接口技术测试题.docx_第3页
第3页 / 共16页
微型计算机原理与接口技术测试题.docx_第4页
第4页 / 共16页
微型计算机原理与接口技术测试题.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

微型计算机原理与接口技术测试题.docx

《微型计算机原理与接口技术测试题.docx》由会员分享,可在线阅读,更多相关《微型计算机原理与接口技术测试题.docx(16页珍藏版)》请在冰豆网上搜索。

微型计算机原理与接口技术测试题.docx

微型计算机原理与接口技术测试题

1.在XXX单元中存放一个数x(0≤x≤15),请用查表法的方法计算x的平方,并将结果保存到YYY单元中。

datasegment

tablesqdb0,1,4,9,16,25,36,64

db81,100,121,144,169,196,225

xxxdb3

yyydb?

dataends

codesegment

assumecs:

code,ds:

data

mainprocfar

start:

pushds

movax,0

pushax

movax,data

movds,ax

movbx,offsettablesq

movah,0

moval,xxx

addbx,ax

moval,[bx]

movyyy,al

int20h

mainendp

codeends

endstart

方法二(参考课本程序):

datasegment

tabqdb0,1,4,9,16,25,36,64

db81,100,121,144,169,196,225

xxxdb2

yyydb?

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movsi,offsettabq

movah,0

moval,xxx

addsi,ax

moval,[si]

movyyy,al

int20h

codeends

endstart2.已知数组由100个字组成,存放在数据段中以偏移地址为ARY开始的内存中,试编写程序求出这个数组元数之和,结果存放在的数据段中以偏移地址为SUM开始的内存中。

datasegment

arydw100dup(?

sumdw?

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

callradd

movah,4ch

int21h

raddprocnear

pushax

pushbx

pushcx

pushdx

leabx,ary

movcx,10

xorax,ax

movdx,ax

cl1:

addax,[bx]

jnccl2

incdx

cl2:

addbx,2

loopcl1

movsum,ax

movsum+2,dx

popdx

popcx

popbx

popax

ret

raddendp

codeends

endstart

3.试编写一程序,将数据段中偏移地址为BUF1开始的100个数据传送到偏移地址为BUF2开始的连续内存单元中去。

STACKSEGMENTSTACK'STACK'

DW100DUP(?

STACKENDS

DATASEGMENT

BUF1DB100DUP(?

BUF2DB100DUP(?

SRCADRDW?

DSTADRDW?

LENDW?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

MAINPROC

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEAAX,BUF1

MOVSRCADR,AX

MOVLEN,100

CALLMVDAT

MOVAX,4CH

INT21H

MAINENDP

MVDATPROC

MOVSI,SRCADR

MOVDI,DSTADR

MOVCX,LEN

CLD

CMPSI,DI

JADONE

STD

ADDSI,CX

DECSI

ADDDI,CX

DECDI

DONE:

REPMOVSB

RET

MVDATENDP

CODEENDS

ENDSTART

4.编写一个程序,实现SUM=a1+a2+……+a20。

已知a1~a20依次存放在以BUF为首址的数据区,每个数据占两个字节,SUM也是两个字节。

datasegment

datdw2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2

sumdw?

dataends

codesegment

mainprocfar

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movax,0

movsum,ax

movsi,offsetdat

movcx,20

lp1:

addax,[si]

incsi

incsi

looplp1

movsum,ax

movah,4ch

int21h

mainendp

codeends

endstart5.试编写一程序,将AX中的各位去反,然后统计出AX中“0”的个数,将结果存到CL中。

CODESEGMENT

MAINPROCFAR

ASSUMECS:

CODE

START:

MOVAX,0E001H

MOVDL,0

MOVCL,16

NOTAX

RETEST:

ANDAX,AX

JSSKIP

INCDL

SKIP:

SHLAX,1

LOOPRETEST

MOVCL,DL

EXIT:

MOVAH,4CH

INT21H

MAINENDP

CODEENDS

ENDSTART6.在内存数据段存储器中,从ADDR单元开始存有一个字符串,它以“$”符号作为结束标志,试编写程序统计该字符串的长度($字符不计入长度),并把长度值存入LETH字单元。

DATASEGMENT

ADDRDB'LIUBIN$'

LETHDW?

DATAENDS

STACKSEGMENTPARASTACK'STACK'

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETADDR

MOVCX,0

LP:

MOVAL,[BX]

CMPAL,'$'

JEDONE

INCCX

INCBX

JMPLP

DONE:

MOVADDR,CX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART7.试编写一程序,要求实现将ASCII码表示的两位十进制数转换为一字节二进制数,其中高地址单元存放十位数。

codesegment

assumecs:

code

start:

movah,1

int21h

movdl,0dh

movah,2

int21h

movdl,0ah

movah,2

int21h

movbl,al

movcx,8

next:

shlbl,1

movdl,30h

adcdl,0

movah,2

int21h

loopnext

movdl,'a'

movah,2

int21h

movah,4ch

int21h

codeends

endstart8.某存储区中存有20个单字节数,试编写一汇编程序分别求出其绝对值并将结果放回原处。

datasegment

numdb1,-1,1,1,1,-1,1,1,1,1,1,1,-1,1,1,1,1,1,1,1

dataends

codesegment

assumecs:

code,ds:

data

startprocfar

pushds

xorax,ax

pushax

movax,data

movds,ax

movcx,20

movsi,offsetnum

lp1:

moval,[si]

andal,al

jnsdone

negal

done:

mov[si],al

incsi

looplp1

movah,4ch

int21h

startendp

codeends

endstart方法二:

 

DSEGSEGMENT

MUMDB1,2,3,-9,0,7,5,-4,-7,-11,34,-67,-44,-51,1,3,6,8,9,3

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

STARTPROCFAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DSEG

MOVDS,AX

MOVCX,20

MOVSI,OFFSETMUM

LP1:

MOVAL,[SI]

ANDAL,AL

JNSDONE

NEGAL

DONE:

MOV[SI],AL

INCSI

LOOPLP1

MOVAH,4CH

INT21H

STARTENDP

CSEGENDS

ENDSTART

9.编程在显示器上输出你自己的汉语拼音姓名的子程序。

DATASEGMENT

LBDB'liubin'

NEQU$-LB

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVES,AX

LEADI,LB

MOVCX,N

CLD

MOVAH,1

INT21H

REPNESCASB

JZFOUND

MOVDL,'N'

JMPDISP

FOUND:

MOVDL,'Y'

DISP:

MOVAH,2

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

10.将数据0-63置入到内存中以BUF为首址的连续64个字节单元中。

datasegment

bufdb64dup(?

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movbx,offsetbuf

moval,0

movcx,63

llp:

mov[bx],al

incal

incbx

loopllp

movah,4ch

int21h

codeends

endstart11.试编写一程序统计出某一内存变量中‘1’的个数,并将结果存入first单元。

datasegment

xdadw11

firstdb?

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movcl,0

movax,xda

lop:

cmpax,0

jzexit

shlax,1

jncnext

inccl

next:

jmplop

exit:

movfirst,cl

int20h

codeends

endstart

课本考题P203:

3-1、

datasegment

stringdw2dup(3045h,0fd34h,0d3dh,9899h,0,3df2h,0,0ffdeh,93fdh,0de6ch)

pdw20dup(?

mdw20dup(?

zdw20dup(?

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

xorbp,bp

leasi,p

leadi,m

leabp,z

pushsi

pushdi

pushbp

leabx,string

movcx,20

ll:

subdx,ax

shrdx,cl

mov[bp],dx

popax

movdx,di

subdx,ax

shrdx,cl

mov[di],dx

popax

movdx,si

subdx,ax

shrdx,cl

mov[si],dx

movah,4ch

int21h

l1:

movax,[bx]

pushax

addax,ax

jzl1

popax

pushax

salax,1

jcl2

popax

mov[si],ax

addsi,2

jmpla

la:

addbx,2

loopll

xorcx,cx

movcx,2

popax

movdx,bp

popax

mov[bp],ax

addbp,2

jmpla

l2:

popax

mov[di],ax

adddi,2

jmpla

codeends

endstart

3-2、

DATASEGMENT

D1DB2,3,4,5,6,7,8,3,4,5

D2DB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

LEASI,D1

XORAX,AX

MOVCX,10

L1:

ADDAL,[SI]

AAA

INCSI

LOOPL1

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

4-3、

CODESEGMENT

MAINPROCFAR

ASSUMECS:

CODE

MOVCH,4

ROT:

MOVCL,4

ROLBX,CL

MOVAL,BL

ANDAL,0FH

ADDAL,30H

CMPAL,3AH

JLLB

ADDAL,7H

LB:

MOVDL,AL

MOVAH,2

INT21H

DECCH

JNZROT

MOVAX,4C00H

INT21H

MAINENDP

CODEENDS

END

3-4、

DATASEGMENT

BLOCKDBNDUP(0)

SIGNALDB00H

ADRDB00H

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE,ES:

DATA

START:

MOVDI.OFFSETBLOCK

CLD

MOVCX,10

MOVSL,IEH

REPNISCASB

JNZAAA

MOVSIGNAL,0FFH

MOVADR,IEH

AAA:

MOVSIGNAL,00H

CODEENDS

ENDSTART

3-6、

datasegment

numdw100dup(10)

sumdw?

msgdb'Overflow!

',13,10,'$'

dataends

stacksegmentstack

db100dup(?

stackends

codesegment'code'

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax

movcx,100

leabx,num

movax,0

again:

addax,[bx]

incbx

incbx

jcerr

loopagain

movsum,ax

jmpdone

err:

movdx,offsetmsg

movah,09h

int21h

done:

movax,4c00h

int21h

codeends

endstart

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

当前位置:首页 > 初中教育

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

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