整理计算机原理与应用上机考试三星题代码doc.docx

上传人:b****8 文档编号:28606957 上传时间:2023-07-19 格式:DOCX 页数:26 大小:20.09KB
下载 相关 举报
整理计算机原理与应用上机考试三星题代码doc.docx_第1页
第1页 / 共26页
整理计算机原理与应用上机考试三星题代码doc.docx_第2页
第2页 / 共26页
整理计算机原理与应用上机考试三星题代码doc.docx_第3页
第3页 / 共26页
整理计算机原理与应用上机考试三星题代码doc.docx_第4页
第4页 / 共26页
整理计算机原理与应用上机考试三星题代码doc.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

整理计算机原理与应用上机考试三星题代码doc.docx

《整理计算机原理与应用上机考试三星题代码doc.docx》由会员分享,可在线阅读,更多相关《整理计算机原理与应用上机考试三星题代码doc.docx(26页珍藏版)》请在冰豆网上搜索。

整理计算机原理与应用上机考试三星题代码doc.docx

整理计算机原理与应用上机考试三星题代码doc

1.在多模块设计中,主模块中调用内部模块buf1,buf2,buf3,buf4。

主模块根据键盘输入的指令(如:

a,b,c,d)调用上述对应的子程序,每个子程序的任务是显示其入口地址。

调用后继续等待调用,若输入ESC键(ASCII码为1BH)则结束程序的执行。

请编写完成该任务的程序。

DATASSEGMENT

ADDRESSDB?

?

?

?

'$'

EXITDB1BH

MESSDB'Pleaseinputoneofthecharacterof"a,b,c,d"',0DH,0AH,'$'

MESS1DB0DH,0AH,'PressESCtoendthisprogram',0DH,0AH,'$'

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

;显示提示句

MOVAH,9

MOVDX,OFFSETMESS

INT21H

;输入字符

MOVAH,1

INT21H

;比较确定输入的字符

CMPAL,'a'

JAN1

CALLa

JMPNEXT

N1:

CMPAL,'b'

JAN2

CALLb

JMPNEXT

N2:

CMPAL,'c'

JAN3

CALLCc

JMPNEXT

N3:

CALLd

;一个数一个数转换成ASCII

NEXT:

MOVAX,BX;BX内存有地址,给ax

MOVBX,10H;

MOVCX,4;

MOVSI,3;令si指向address的最后一个单元

ZH:

MOVDX,0

DIVBX;取出地址的最低位到dx

CMPDX,9

JAZF

ORDX,30H

MOV[ADDRESS+SI],DL

JMPL

ZF:

ADDDX,55;字符

MOV[ADDRESS+SI],DL

L:

DECSI

LOOPZH

;显示地址

MOVAH,9

MOVDX,OFFSETADDRESS

INT21H

;显示提示准备结束程序

NEXT1:

MOVAH,9

MOVDX,OFFSETMESS1

INT21H

MOVAH,1

INT21H

CMPAL,EXIT

JNENEXT1

MOVAH,4CH

INT21H

;子程序部分

aPROC

MOVBX,OFFSETa

RET

aENDP

bPROC

MOVBX,OFFSETb

RET

bENDP

CcPROC

MOVBX,OFFSETCc

RET

CcENDP

dPROC

MOVBX,OFFSETd

RET

dENDP

CODESENDS

ENDSTART

2.现有一控制程序共5个工序,要求输入0-4的序号,分别执行各工序的子程序,每个子程序的任务是显示其入口地址。

调用后继续等待调用,按回车则结束程序的执行。

DATASSEGMENT

MESSDB0DH,0AH,'Pleaseinputanumber(0,1,2,3,4)toselectaprocesstoexecute.',0DH,0AH,'OrpressENTERtoexit',0DH,0AH,'$'

ADDRESSDB0DH,0AH,?

?

?

?

'$'

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

;显示提示信息,输入字符

L1:

MOVAH,9

MOVDX,OFFSETMESS

INT21H

MOVAH,1

INT21H

;判断输入字符,调用子程序

CMPAL,'0'

JNZN1

CALLZERO

JMPNEXT

N1:

CMPAL,'1'

JNZN2

CALLONE

JMPNEXT

N2:

CMPAL,'2'

JNZN3

CALLTWO

JMPNEXT

N3:

CMPAL,'3'

JNZN4

CALLTHREE

JMPNEXT

N4:

CMPAL,'4'

JNZN5

CALLFOUR

JMPNEXT

N5:

CMPAL,0DH;如果输入回车就结束运行

JNZNEXT

MOVAH,4CH

INT21H

;把地址转化成对应ASCII

NEXT:

MOVAX,BX

MOVBX,10H

MOVCX,4

MOVSI,5

ZH:

MOVDX,0

DIVBX

CMPDX,9

JAZF

ORDX,30H

MOV[ADDRESS+SI],DL

JMPL

ZF:

ADDDX,55

MOV[ADDRESS+SI],DL

L:

DECSI

LOOPZH

;显示地址

MOVAH,9

MOVDX,OFFSETADDRESS

INT21H

JMPL1

;子程序部分

ZEROPROC

MOVBX,OFFSETZERO

RET

ZEROENDP

ONEPROC

MOVBX,OFFSETONE

RET

ONEENDP

TWOPROC

MOVBX,OFFSETTWO

RET

TWOENDP

THREEPROC

MOVBX,OFFSETTHREE

RET

THREEENDP

FOURPROC

MOVBX,OFFSETFOUR

RET

FOURENDP

CODESENDS

ENDSTART

3.现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其修改为disk,并将结果在显示器上显示。

DATASSEGMENT

MESSDB'Pleaseinputawordwith4letters',0DH,0AH,'$'

SMAXDB5

SACTDB?

STRING2DB4DUP(?

),0DH

STRING3DB'disk'

DATASENDS

STACKSSEGMENT

STACKSENDS

EXTRASEGMENT

STRING1DB'data,name,time,file,code,path,user,exit,quit,text','$'

EXTRAENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVAX,EXTRA

MOVES,AX

MOVSI,OFFSETSTRING2

MOVDI,OFFSETSTRING1

LEABX,STRING3

;显示提示信息,输入字符串

MOVAH,9

MOVDX,OFFSETMESS

INT21H

MOVAH,10

LEADX,SMAX

INT21H

;准备串操作

CLD

MOVAX,0

MOVCX,49

;主算法部分

L1:

CMPSB

JNZL2;不相等就跳去下一次循环

INCAX;ax记录相等字符的个数

CMPAX,4

JNZXH;有四个相等就说明找到了

SUBDI,4

MOVDX,0;dx记录替换到第几个字母

;替换

CDZ:

MOVAL,DS:

[BX]

MOVES:

[DI],AL

INCDI

INCBX

INCDX

CMPDX,4

JNZCDZ

L2:

MOVSI,OFFSETSTRING2

MOVAX,0

XH:

LOOPL1

;显示回车

MOVAH,2

MOVDL,0DH

INT21H

MOVAH,2

MOVDL,0AH

INT21H

;显示结果

MOVAX,EXTRA

MOVDS,AX;ds段地址改为附加段,便于输出字符串

MOVAH,9

MOVDX,OFFSETSTRING1

INT21H

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

4.现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其删除,并在显示器上显示。

DATASSEGMENT

MESSDB'Pleaseinputawordwith4letters',0DH,0AH,'$'

SMAXDB5

SACTDB?

STRING2DB4DUP(?

),0DH

STRING3DB45DUP(0),'$'

DATASENDS

STACKSSEGMENT

STACKSENDS

EXTRASEGMENT

STRING1DB'data,name,time,file,code,path,user,exit,quit,text','$'

EXTRAENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVAX,EXTRA

MOVES,AX

MOVSI,OFFSETSTRING2

MOVDI,OFFSETSTRING1

LEABX,STRING3

;显示提示信息,输入字符串

MOVAH,9

MOVDX,OFFSETMESS

INT21H

MOVAH,10

LEADX,SMAX

INT21H

CLD

MOVAX,0

MOVCX,49

MOVDX,0

;主程序

L1:

CMPSB;比较,有三种情况:

;

(1)发现接下来4个字符都相等,表明找到单词,只需跳过比较下一个字符串

;

(2)发现此字符不相等,且前面的字符也都不相等,此字符正常复制

;(3)发现此字符不相等,而前x个字符相等,表明前面x个相等的字符是巧合,退回去复制前x个字符

JNZNOTEQUAL

INCAX;记录相等字符的个数

INCDX;记录出现第一个相等的字符以后比较到第几个字符了

CMPAX,4

JZN2;ax=4说明找到了单词,跳去准备比较下一个字符;ax!

=4则还没找完,继续比对寻找

JMPXH

NOTEQUAL:

CMPAX,0;判断前面有没有相等的字符,有则退回复制字符,没有则复制这个字符

JAN1

CALLTRANSFER

INCBX

MOVSI,OFFSETSTRING2

JMPXH

;退回复制字符部分

N1:

SUBDI,DX

ADDCX,DX

N:

CALLTRANSFER

INCBX

DECDX

CMPDX,0

JNZN

;循环前的调整

N2:

MOVDX,0

MOVAX,0

MOVSI,OFFSETSTRING2

XH:

LOOPL1

;显示结果

MOVAH,2

MOVDL,0DH

INT21H

MOVAH,2

MOVDL,0AH

INT21H

MOVAH,9

MOVDX,OFFSETSTRING3

INT21H

MOVAH,4CH

INT21H

;子程序,用于传递字符

TRANSFERPROC

MOVAL,ES:

[DI-1]

MOVDS:

[BX],AL

MOVAL,0

RET

TRANSFERENDP

CODESENDS

ENDSTART

5.一个有符号字数组以0为结束标志,编程求这个数组的最大值、最小值、平均值。

DATASSEGMENT

NUMDW-3,-2,-1,0,1,2,3,0

MAXDW1

MINDW1

AVERAGEDW1

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVBX,LENGTHOFNUM;bx储存数组长度

;求最大值

LEASI,NUM

LEADI,MAX

CALLFMAX

;求最小值

LEASI,NUM

LEADI,MIN

CALLFMIN

;求平均值

LEASI,NUM

LEADI,AVERAGE

CALLFAVE

;结束程序

MOVAH,4CH

INT21H

FMAXPROC

MOVAX,[SI]

MOVCX,BX

L:

CMPAX,[SI]

JNLXH

MOVAX,[SI]

XH:

ADDSI,2

LOOPL

MOV[DI],AX

RET

FMAXENDP

FMINPROC

MOVAX,[SI]

MOVCX,BX

L1:

CMPAX,[SI]

JLXH1

MOVAX,[SI]

XH1:

ADDSI,2

LOOPL1

MOV[DI],AX

RET

FMINENDP

FAVEPROC

MOVAX,0

MOVCX,BX

L2:

ADDAX,[SI];求和

ADDSI,2

LOOPL2

MOVDX,0

DIVBX;求平均值

MOV[DI],AX

RET

FAVEENDP

CODESENDS

ENDSTART

6.在BUFFER中定义了的十个带符号字,将其中的负数变成绝对值,并以十进制方式输出。

DATASSEGMENT

BUFFERDB-1,-2,-3,-4,1,2,3,4,0,0

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVSI,OFFSETBUFFER

MOVCX,10

MOVDX,0

;主算法

L:

MOVDL,[SI]

CMPBYTEPTR[SI],0;判断数字正负,正则跳去输出,负则求相反数

JNLNEXT

NEGDL

NEXT:

;转换为ASCIIcode输出

ORDL,30H

MOVAH,2

INT21H

INCSI

MOVDX,0

LOOPL

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

7.已知数组A包含20个互不相等的字型整数,数组B包含30个互不相等的字型整数,试编制一程序把在A中而不在B中出现的整数放于数组C中。

DATASSEGMENT

ARRAYADW1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20

ARRAYBDW1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30

ARRAYCDW30DUP(0)

COUNTDB30

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVDI,OFFSETARRAYA

MOVSI,OFFSETARRAYB

MOVCL,LENGTHOFARRAYB

;主算法部分

L2:

MOVBYTEPTR[COUNT],CL;把cl的值给count外循环计数变量

MOVCX,20;内循环次数给cx

MOVAX,[SI]

;内循环,找

L1:

CMPAX,[DI]

JNENEXT

MOVBX,1;记录是否找到相同的数字

NEXT:

ADDDI,2

CMPBX,1

LOOPNZL1;找到相同数字了,跳出循环,否则继续找知道全部遍历完

CMPBX,1;检查有没有找到相同的数字,有则复制,否则跳去准备下一轮大循环

JENEXT1

MOV[ARRAYC+SI-50],AX

NEXT1:

ADDSI,2

MOVDI,OFFSETARRAYA

MOVBX,0

MOVCL,BYTEPTR[COUNT];count值给cx用于外循环计数

LOOPL2

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

8.已知数组A包含20个互不相等的字型整数,数组B包含30个互不相等的字型整数,试编制一程序把既在A中又在B中出现的数存放于数组C中。

DATASSEGMENT

ARRAYADW1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20

ARRAYBDW1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30

ARRAYCDW20DUP(0)

COUNTDB20

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVSI,OFFSETARRAYA

MOVDI,OFFSETARRAYB

MOVCL,LENGTHOFARRAYA

;主算法部分

L2:

MOVBYTEPTR[COUNT],CL;把cx值赋给外循环计数变量count

MOVCX,30;把内循环次数给cx

MOVAX,[SI]

L1:

CMPAX,[DI];比较,相等时bx记1,否则跳到准备下一次内循环

JNENEXT

MOVBX,1

NEXT:

ADDDI,2

CMPBX,1;判断有没有找到相同的数字,有则跳出循环,否则继续寻找,直到所有都被遍历

LOOPNZL1

CMPBX,1;判断内循环结束时有没有找到相同的数字,有则复制,否则跳去准备下一次外循环

JNENEXT1

MOV[ARRAYC+SI],AX

NEXT1:

ADDSI,2

MOVDI,OFFSETARRAYB

MOVBX,0

MOVCL,BYTEPTR[COUNT]

LOOPL2

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

9.(***)在内存中定义一个用于加密的key和明文字符串,用这个key的每个字符依次和明文字符串的对应字符进行异或操作得到密文字符串,并将密文字符串保存在另一个变量中。

例如:

key为“ABXmv#7”

明文字符串

T

h

i

s

a

p

l

a

i

n

t

e

x

t

Key

A

B

X

m

v

#

7

A

B

X

m

v

#

7

A

B

X

DATASSEGMENT

STRINGDB'Thisisaplaintext'

KEYDB'ABXmv#7'

STRING1DB20DUP(0),0DH,0AH,'$'

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

LEASI,STRING

LEADI,KEY

LEABX,STRING1

MOVCX,LENGTHOFSTRING

MOVDX,0;记录key是否到最后

;主算法部分

L:

MOVAL,[SI]

XORAL,[DI]

MOV[BX+SI],AL

INCSI

INCDI

INCDX

CMPDX,7;判断key是否到最后,是则回到第一个,否则继续

JNZXH

LEADI,KEY

MOVDX,0

XH:

LOOPL

;显示结果

MOVAH,9

MOVDX,OFFSETSTRING1

INT21H

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

10.(***)在内存中定义一个用于加密的key和明文字符串,key中的每个数字表示将明文字符串中的对应字符进行旋转移位的次数,负数表示左移位,正数表示右移位。

加密key的长度为10个字节:

-2,4,1,0,-3,5,2,-4,-4,6。

先用加密key处理字符串的前10个字节,再处理接下来的10个字节,以此类推。

将密文字符串保存在另一个变量中。

DATASSEGMENT

STRINGDB'Thisisaplaintext'

KEYDB-2,4,1,0,-3,5,2,-4,-4,6

STRING1DB20DUP(0),0DH,0AH,'$'

COUNTDB0

DATASENDS

STACKSSEGMENT

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

LEASI,STRIN

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

当前位置:首页 > PPT模板 > 简洁抽象

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

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