(微机原理及应用)编程题-试题集_第1页
(微机原理及应用)编程题-试题集_第2页
(微机原理及应用)编程题-试题集_第3页
(微机原理及应用)编程题-试题集_第4页
(微机原理及应用)编程题-试题集_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(微机原理及应用)编程题-试题集LtD重庆科技学院试题库系统试题库导出试题微机原理及应用-编程题(43题)题序:0017题型:06难度:01分值:10.0章号:03节号:02知识点:;8086/8088指令系统题干:变量DATAX和DATAY定义如下:

DATAX

DW

0148H

DW

2316H

DATAY

DW

0237H

DW

4052H试编写一个程序段,实现将DATAX和DATAY两个字数据相乘(用MUL)。答案:

解:

(1)

MOV

AX,DATAXMUL

DATAYMOV

DATAY,AXMOV

DATAY+2,DX题序:0018题型:06难度:02分值:10.0章号:03节号:02中的两个双字数据相加,和存放在DATAY和答案:

解:

(1)

MOV

AX,DATAXADD

AX,DATAYMOV

BX,DATAX+2ADD

BX,DATAY+2MOV

DATAY,AXMOV

DATAY+2,BX题序:0020题型:06难度:03分值:10.0章号:03节号:02知识点:;8086/8088指令系统题干:变量N1和N2均为2字节的非压缩BCD数码,请写出计算N1与N2之差的指令序列。答案:

解:

MOV

AX,0MOV

AL,N1+1SUBAL,N2+1AASMOV

DL,ALMOV

AL,N1SBBAL,N2AASMOV

DH,AL题序:0006题型:06难度:02分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:编写程序实现对两个存储区中的字进行比较。如找到一对不同的字,则退出,此时,ZF为0,DI指向此字;如两个存储区中所有的字都相同,则退出程序时,CX中值为0,ZF为1。答案:

解:

MATT:

MOV

SI,OFFSETSOURCE

;源区首址

MOV

DI,OFFSETTARGET

;目的区首址

MOV

CX,NUMBER

JCXZ

EXIT

;如CX为0,则结束

PUSH

CX

;保存有关寄存器

PUSH

SI

PUSH

DI

CLD

;清方向标志

REPE

CMPSW

JZ

MATCH

;比较

PUSHF

;ZF为1,则转移

SUB

DI,2

;ZF为0,则DI指向次字

POPF

JMP

EXIT

;推出

MATCH:

POP

DI

;恢复寄存器

POP

SI

POP

CX

EXIT:

RET题序:0015题型:06难度:02分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:根据下列要求编写一个汇编语言程序::(1)代码段的段名为COD_SG(2)数据段的段名为DAT_SG(3)堆栈段的段名为STK_SG(4)变量HIGH_DAT所包含的数据为95(5)将变量HIGH_DAT装入寄存器AH,BH和DL(6)程序运行的入口地址为START答案:

解:

DAT_SG

SEGEMNT

HIGH_DAT

DB

95DAT_SG

ENDS;STK_SG

SEGMENT

DW

64DUP(?)STK_SG

ENDS;COD_SG

SEGMENTMAIN

PROC

FARASSUMECS:COD_SG,DS:DAT_SG,SS:STK_SGSTART:

MOV

AX,DAT-SG

MOV

DS,AX

MOV

AH,HIGH_DAT

MOV

BH,AHMOV

DL,AHMOV

AH,4CHINT

21HMAIN

ENDPCOD_SGENDS

END

START题序:0026题型:06难度:02分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:已知整数变量A和B,试编写完成下述操作的程序:(1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B中;(2)若两个数均为奇数,则两数分别加1,并存回原变量;(3)若两个数均为偶数,则两变量不变。答案:

解:

dsegsegment

a

dw

?

b

dw

?dsegendscseg

segmentmain

proc

farassume

cs:cseg,ds:dsegstart:

push

ds

sub

ax,ax

push

ax

mov

ax,dseg

mov

ds,axbegin:

mov

ax,a

mov

bx,b

xor

ax,bx

test

ax,0001

jz

class

test

bx,0001

jz

exit

xchg

bx,a

mov

b,bx

jmp

exitclass:

test

bx,0001

jz

exit

inc

b

inc

aexit:retmain

endpcseg

ends

end

start题序:0001题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:在DS段中有一个从TABLE开始的由160个字符组成的链表,设计一个程序,实现对此表进行搜索,找到第一个非0元素后,将此单元和下一单元清0。答案:

解:

MOV

CX,SEGTABLE

MOV

DS,CX

;将段地址送DS

MOV

SI,OFFSETTABLE;表偏移量送SI

MOV

CX,160

;字节数

XOR

AL

NEXT:

CMP

AL,[SI]

JNE

EXIT1

INC

SI

LOOP

NEXT

EXIT1:MOV

[SI],AL

INC

SI

MOV

[SI],AL题序:0004题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:用循环控制指令设计程序段,从60H个元素中寻找一个最大值,结果放在AL中。答案:

解:

MOV

SI,OFFSETDATA1;将数据起始地址送SI

MOV

CX,5FH

;有60H-1次循环

MOV

AL,[SI]

;将第一个元素放AL中

COMPARE:INC

SI

CMP

AL,[SI]

JL

XCHMAX

JMP

NEXT

XCHMAX:

MOV

AL,[SI]

NEXT:

LOOPCOMPARE题序:0007题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:编写程序实现在TABLE为起始地址的100个字符长度的表中检索“$"字符。答案:

解:

START:

MOV

CX,SEGTABLE

;表段地址送ES

MOV

ES,CX

MOV

DI,OFFSETTABLE

;表偏移量送DI

MOV

AL,'$'

;检索的关键字

MOV

CX,64H

;检索的字节数

PUSH

DI

;保存起始地址

CLD

清除方向标志

REPNE

SCASB

;检索

JNZ

NFOUN

;如未找到,则转移

SUB

DI,1

找到,则指向字符

JMP

EXIT

NFOUN:

POP

DI

;恢复起始地址

EXIT:

RET

题序:0009题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:编写程序实现两个16位非组合BCD码的数相加。答案:

解:

ANBCD:

MOV

CH,AH;进入程序段时,AX中为第二个操作数

ADD

AL,BL;BX中为被加数,实现低8位相乘

AAA

XCHGAL,CH

ADC

AL,BH;实现高8位相加

AAA

MOV

AH,AL;和保存在AX中

MOV

AL,CH

RET题序:0010题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:编写程序段设计一个实现16位非组合BCD码减法的程序。答案:

解:

SUBCD:

MOV

CH,AH

;AX-BX->AX,为非组合BCD码

SUB

AL,BL

AAS

XCHGAL,CH

SBB

AL,BH

AAS

MOV

AH,AL

MOV

AL,CH

RET题序:0011题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:编写程序实现两个16位组合BCD码相减,进入程序时,BX中为减数,AX中为被减数,程序执行后,结果在AX中。答案:

解:

STASUB:MOV

CH,AH;保存高8位

SUB

AL,BL;低8位相减

DAS

;十进制调整

XCHGAL,CH

SBB

AL,BH;高8位相减

DAS

MOV

AH,AL;结果在AX中

MOV

AL,CH

RET题序:0012题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:编写程序实现两个16位组合BCD码相加。进入程序时,BX中为加数,AX中为被加数,程序执行后,结果在AX中。答案:

解:

STAADD:MOV

CH,AH

;AX+BX->AX,为组合BCD码

ADD

AL,BL

DAA

XCHGAL,CH

ADC

AL,BH

DAA

MOV

AH,AL

MOV

AL,CH

RET题序:0013题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:编写程序将一个8位二进转换为2位BCD数字,进入程序时,AL中为二进制数,退出程序时,如CF为0,则AL中为BCD数字,如CF为1,则表示由于输入值超出范围故结果无效。答案:

解:

START:

CMP

AL,99;是否超出范围?

JBE

STRAT

STC

;是,则转EXIT,并给CF置1

JC

EXIT

STRAT:

MOV

CL,10;10作为除数

XOR

AH,AH

CBW

;将AL中数扩展到AH

DIV

CL

;除法结果AL中为高位,AH中为低位

MOV

CL,4

SHL

AL,CL;左移4位

OR

AL,AH;合成BCD码在AL中

EXIT:

RET

题序:0014题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:编写程序用XLAT指令将小于16的二进制数转换成ASCII表示的16进制数。答案:

解:

START:

JMP

BINASCASCII

DB

'0123456789ABCDEF'BINASC:PUSHBX

AND

AL,0FH

;清除AL中高4位

LEA

BX,ASCII;BX指向ASCII表

XLAT

;转换为ASCII码

POP

BX

RET题序:0030题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:编写完整的8086汇编程序:将字符缓冲区A的字符'1234567890'倒序存放到缓冲区B中。答案:

解:

DSEG

SEGMENTA

DB

'1234567890'DSEG

ENDSESEG

SEGMENT

B

DB

10

DUP(?)ESEG

ENDSCSEG

SEGMENT

ASSUME

CS:CSEG,DS:DSEG,ES:ESEGSTART:

MOV

AX,DSEG

MOV

DS,AX

MOV

AX,ESEG

MOV

ES,AX

LEA

SI,A

LEA

DI,B

ADD

DI,9

MOV

CX,10

MOVE:

CLD

LODSB

STD

STOSB

LOOP

MOVE

MOV

AH,4CH

INT

21HCSEG

ENDSEND

START

题序:0031题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:编写完整的8086汇编程序:查表求X(0-9)的立方并将结果存放到变量XXX中去。答案:

解:

DATA

SEGMENTTAB

DW

0,1,8,27,64,125,216,343,512,729X

DB

8XXX

DW

?DATA

ENDS

CODE

SEGMENTASSUMECS:CODE,DS:DATA

START:MOV

AX,DATA

MOV

DS,AX

;为DS送初值

MOV

AL,X

ADD

AL,AL

MOV

BL,AL

;求立方表的偏移

MOV

BH,0

MOV

AX,TAB[BX]

;查表

MOV

XXX,AX

;保存

MOV

AH,4CH

;返回DOS

INT

21HCODE

ENDSENDSTART题序:0033题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:编写程序,计算下面函数的值。答案:

解:

DATA

SEGMENT

X

DW

34

S

DW

?DATA

ENDSCODE

SEGMENT

ASSUME

CS:CODE,DS:DATASTART:MOV

AX,DATA

MOV

DS,AX

MOV

AX,X

;将X送到AX中

CMP

AX,0

;(AX)>0吗?

JL

DOUB

;是,转向doub

CMP

AX,10

;否,(ax)<10吗?

JLE

TRIB

;是,转向trib

SAL

AX,1

;否,乘以4

SAL

AX,1

JMP

EXITDOUB:SAL

AX,1

;乘以2

JMP

EXITTRIB:SAL

AX,1

;乘以3

ADD

AX,XEXIT:MOV

S,AX

;保存结果

MOV

AH,4CH

;结束

INT

21HCODE

ENDS

END

START题序:0035题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:已知在内存中从BLOCK单元起存放有20个带符号字节数据(-7,1,12,-90,-70,34,-1,56,45,-12),统计其中负数的个数并放入COUNT单元。答案:

解:

DATA

SEGMENT

BLOCK

DB

-7,1,12,-90,-70,34,-1,56,45,-12

CN

EQU

$-BLOCK

COUNT

DB

?DATA

ENDSCODE

SEGMENT

ASSUME

DS:DATA,CS:CODESTART:MOV

AX,DATA

MOV

DS,AX

MOV

DL,0

LEA

SI,BLOCK

MOV

CX,CNLP:

MOV

AL,[SI]

TESTAL,80H

JZ

NEXT

INC

DLNEXT:INC

SI

LOOP

LP

MOV

COUNT,DL

MOV

AH,4CH

INT

21HCODE

ENDS

END

START题序:0036题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:编写程序先判断数据段中Buffer1单元中的字母是否是大写字母,若是,将其转换为对应的小写字母。答案:

解:

DATA

SEGMENT BufferDB?

DATA

ENDSCODE

SEGMENT

ASSUME

DS:DATA,CS:CODESTART:MOV

AX,DATA

MOV

DS,AX LEABX,OFFSETBuffer MOVAL,[BX]

CMP

AL,'A'

JB

EXIT

CMP

AL,'Z'

JA

EXIT

ADD

AL,20H

MOV

DL,ALEXIT:MOV

AH,02H

INT

21HCODE

ENDS

END

START题序:0037题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:试定义将一位十六进制数转换为ASCII码的宏指令。答案:

解:

HEXTOA

MACRO

AND

AL,0FHCMP

AL,9JNA

HEXTOA1ADD

AL,7HHEXTOA1:ADD

AL,30HENDM题序:0041题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:用循环控制指令设计程序段,从100个元素中寻找一个最大值,结果放在AL中(假设数据存放在起始地址为DATA1开始的单元中)。答案:

解:

MOV

SI,OFFSETDATA1MOV

CX,99

MOV

AL,[SI]

L1:INC

SICMP

AL,[SI]JL

L2JMP

L3

L2:MOV

AL,[SI]L3:LOOPL1HLT题序:0042题型:06难度:03分值:10.0章号:04节号:02知识点:;汇编语言及程序设计题干:在DS段中有一个从TABLE开始的由1000个字符组成的链表,设计一个程序段,实现对此表的搜索,找到第一个非0元素后,将此单元和下一个单元清0。答案:

解:

MOV

CX,SEGTABLEMOV

DS,CX

;将段地址送DSMOV

SI,OFFSETTABLE;表偏移量送SIMOV

CX,1000

;字节数XOR

AL,ALL1:CMP

AL,[SI]JNE

L2INC

SILOOP

L1L2:MOV

[SI],ALINC

SIMOV

[SI],AL题序:0043题型:06难度:03分值:10.0章号:04节号:02知

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论