汇编语言程序设计期末大作业。
《汇编语言程序设计》期末考试-试卷及答案
《汇编语言程序设计》期末考试-试卷及答案一、 选择题(每题1分,共20分)1、下面存储器中属于辅助存储器的是:(、下面存储器中属于辅助存储器的是:(CDE CDE CDE)) A. RAM B. ROM C.C.磁盘磁盘 D.D.光盘光盘 E. 硬盘2、通常说计算机的内存为32M 32M、、64M 或128M 指的是:(指的是:(C C )A. RAM 的容量B. ROM 的容量C. RAM 和ROM 的容量D.硬盘的容量3、下面的说法正确的是:(、下面的说法正确的是:(AE AE AE))A. 存储器是计算机中存放程序和数据的记忆部件。
存储器是计算机中存放程序和数据的记忆部件。
B. 存储器中的信息被读出后即从存储器中消失。
存储器中的信息被读出后即从存储器中消失。
C. 存储器中如果已经存有数据,则不能再向其中写入新的数据。
D. 半导体存储器的存取速度比CD-ROM 的存取速度要慢。
的存取速度要慢。
E. 辅助存储器需要CPU 通过I/O 接口访问,因而速度较慢。
4、下面属于系统软件的有(、下面属于系统软件的有(A A )A. WINDOWS A. WINDOWSB. MASMC. Visual C++D. WORD 5. 5. 汇编语言的优点不包括汇编语言的优点不包括汇编语言的优点不包括__D_____D_____D___。
A A 直接有效地控制硬件直接有效地控制硬件直接有效地控制硬件B B B 生成的代码序列短小生成的代码序列短小生成的代码序列短小C C 运行速度快运行速度快运行速度快D D 编程容易6. 6. 下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( AB) A 、AX AX,,BX BX,,CX CX,,DX B 、BX BX,,BP BP,,SI SI,,DI C 、SP SP,,IP IP,,BP BP,,DX D 、CS CS,,DS DS,,ES ES,,SS7. 7. 可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是(可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是( D D))。
大工《汇编语言程序设计》大作业参考题目及要求【内容仅供参考】686
题目:题目五:信息检索系统1.谈谈你对本课程学习过程中的心得体会与建议?在接触这门课程初始,就感到汇编语言并不是很容易就可以弄懂的。
相比较以前学过的程序语言如C、C++等,电脑等于在迁就人的思维方式,但汇编却是接近机器语言的一门语言,我们学习和编写程序时必须要去迁就电脑的思维方式,要设身处地地用电脑的角度去思考问题,这就是我学习汇编语言时感受最深的地方,想起来很简单,写起来相当的不易。
汇编的学习不仅仅是学习其语法,而更多的是学习计算机基本的体系结构。
其中遇到很多新的概念,名字。
如寄存器、中断、寻址方式等。
这些概念在刚接触汇编这门课的时候难以理解,但在之后的学习中通过老师的讲解,自己亲手编程的方式也就渐渐清晰明了。
我们在学习之前都需要明确什么是汇编语言。
计算机能够直接识别的数据是由二进制数0和1组成的代码。
机器指令就是用二进制代码组成的指令,一条机器指令控制计算机完成一个基本操作。
为了克服机器语言的缺点,人们采用助记符表示机器指令的操作码,用变量代替操作数的存放地址等,这样就形成了汇编语言。
经过一个学期的学习,我也慢慢摸出了汇编学习的规律。
首先,学习这门语言时如果能联系上以前学过的其他高级语言的知识,最重要的是一些思考问题,实现功能的逻辑的思考,会帮助我们很快的找到编写程序的思路和方向。
例如C语言程序的运行逻辑结构有顺序(按语句依次执行)、分支结构(IF...THEN...ELSE...),循环结构(FOR...NEXT)三种结构,也通过C语言了解并掌握了什么是子程序,什么是调用。
事实上,汇编语言中有关程序结构,子程序等等的知识都是跟C语言十分相似的,只是在编程时用到的语言不同:汇编语言完全面向机器,需要指明数据在寄存器、内存中的流向。
第二,学习汇编语言,首要问题是学习80X86指令系统。
如果能将指令系统中的各个助记符、格式等都能完全掌握并灵活运用,大部分工作就已经完成了。
指令系统确定了CPU所能完成的功能,是用汇编语言进行程序设计的最基本部分。
汇编语言程序设计期末考试-试卷及参考答案
汇编语言程序设计期末考试-试卷及参考答案【汇编语言程序设计】期末考试-试卷及参考答案执行上述两条指令后,正确的结果是( B )。
A.(AX)=1001H; B.(AX)=0FFFH;C.(AX)=1000H; D.(AX)=0111H。
6.串指令中的目的操作数地址一定是由____A_ _提供。
()A.ES:[DI] ; B.SS:[BP];C.DS:[SI] ; D.CS:[IP]。
7.将DX的内容除以2,正确的指令是( C )。
A.DIV 2 ;B.DIV DX,2 ;C.SAR DX,1;D.SHL DX,1。
8. 用户为了解决自己的问题,用汇编语言所编写的程序,称为( B )。
A.目标程序; B.汇编语言源程序;C.可执行程序; D.汇编程序。
9.用一条指令仅实现将AX←BX+SI的方法是( D )。
A.XCHG AX,[BX][SI] ;B.MOV AX,[BX+SI];C.LEA AX,BX[SI] ;D.LEA AX,[BX][SI]。
10.设SP初值为2000H,执行指令“PUSH AX”后,SP的值是( C )。
A.1FFFH; B.1998H;C.1FFEH; D.2002H。
2. C二、指出下列指令的出错原因,并改正。
(每小题2分,共12分)1.MOV BX,DL;操作数类型不匹配,改正为:MOV BL,DL 或MOV BX,DX2.MOV CS,AX;代码段寄存器CS不能作目的操作数,改正为MOV DS,AX3.ADD AX,DS;段寄存器DS的内容不能作为加法指令的操作数,改正为MOV BX,DSADD AX,BX4.TEST BX,[CX];不能使用CX实现寄存器间接寻址,改正为MOV SI,CXTEST BX,[SI]5.SUB [BX],[BP+SI];两个操作数不能同为存储器操作数,且两个操作数的数据类型不确定,改正为:MOV AX,[BX]SUB AX,[BP+SI]或:MOV AL,[BX]SUB AL,[BP+SI]6.SHL DX ;没有给出移位次数,改正为SHL DX,1或 SHL DX,CL三、程序填空题(注意:每空只能填一条指令,并注释说明所填指令的作用!每空3分,共18分)1.在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并保存在AX寄存器中。
汇编语言程序设计期末考试题
汇编语言程序设计期末考试题学院(系):学号: 姓名:计分:一、项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
每小题1分,共10分)1.CPU发出的访问存储器的地址是( )A.物理地址 B。
偏移地址 C.逻辑地址 D。
段地址2.将高级语言的程序翻译成机器码程序的实用程序是()A。
编译程序 B.汇编程序 C。
解释程序 D。
目标程序3.DEC BYTE PTR[BX]指令中的操作数的数据类型是( )A.字 B。
双字 C。
字节 D。
四字4.在下列语句中,BUFFER称为()BUFFER DB 01H,0AHA.符号B.变量 C。
助记符 D.标号5.串操作指令中,源串操作数的段地址一定在( )寄存器中。
A. CSB. SS C。
DS D. ES6.使计算机执行某种操作的命令是( )A。
伪指令 B。
指令 C.标号 D。
助记符7.将数据5618H存放在存储单元中的伪指令是( )A. DATA1 DW 1856H B。
DATA1 DB 18H,56HC。
DATA1 EQU 5618H D。
DATA1 DB 18H,00H,56H,00H8.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( )A。
1400H B。
77F8H C. 0000H D. 0FFFFH9.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。
目前,微机中普遍采用的是( )码。
A. BCD码 B。
二进制码 C。
ASCII码 D。
十六进制码10.用指令的助记符、符号地址、标号和伪指令、宏指令以及规定的格式书写程序的语言称为()A。
汇编语言 B。
高级语言 C.机器语言 D。
低级语言二、填空题(每空1分,共20分)1.在8086/8088汇编语言中,有五条串操作指令,其中搜索字符串指令的助记符是______.2.通常所说的计算机系统包括________和________两大部分。
《汇编语言程序设计》期末复习题和答案.doc
《汇编语言程序设计》期末复习题及答案一、选择(30题)1.下列是8位带符号二进制数的补码,其中最大的是(B )。
B、000000012.在一段汇编语言程序中多次调用另一段程序,用宏指令比用子程序实现(C )C、占内存空间大,但速度快3.数据定义为:EE DB 3, 4CC DW 3456H, 6789H执行指令“MOV CX, WORD PTR EE+1” 后,(CX) = ( B )B、5604H4.有如下指令序列:MOV AL, 95HMOV CL, 2SAR AL, CL上述指令序列执行后,AL的内容是(D )D、0E5H5.设A=186m B=273R,C=0BB E把这三个数看成无符号数,则它们之间的关系是(D )D、A<B=C6.用一条指令实现寄存器BX和SI的内容相加,并将结果送入AX中,这条指令是(D )D、LEA AX, [BX] [SI]7.要从端口1234H中读入8位数据,其指令应是(C )C、MOV DX, 1234HIN AL, DX8.循环控制指令LOOPNZ/LOOPNE继续执行循环的条件是(B )B、CX尹。
且ZF=O9.8088/8086存储器分段,每个段不超过(D )D、64K个字节10.表示过程定义结束的伪指令是(A )A、ENDP11.用来存放下一条将要执行的指令代码段地址的段寄存器是(D )D、CS12.假定(SS) =1000H, (SP) =0100H, (AX) =5609H,执行指令PUSH AX 后,存放数据56H的物理地址是(D )D、100FFH13.执行“SUB AX, [BP] [DI] ”指令,取源操作数时,使用的物理地址表达式是(A )A、16*SS+BP+DI14.设AX中有一带符号数8520H,执行“SA R AX, 1”指令后,AX中的值是(C )C、0C290H15.设(BX) =1234H, (DS) =2000H, (21234H) =5678H,则指令“LEA SI, [BX] ” 执行后的结果是:(B )B、SI=1234H16.测试BL中的数是否为负数,若为负数则转移至AA1处,横线处的指令应为(A )A、JNE17.设DF=O, (SI) =20H, (CX) =10,执行“REP LODSW"指令后,SI 中的内容是(C )C、34H18.在程序执行过程中,IP寄存器中始终保存的是(B )B、下一条指令的首地址19.设SP初值为2000H,执行指令“POP AX”后,SP的值是(A )A、2002H20.若AX=3500H, CX=56B8H,当AND AX, CX 指令执行后,AX= ( A )A、1400H21.汇编源程序时,出现语法错误的语句是(A )A、MOV DS, 1200H22.将数据1234H存放在存储单元中的伪指令是(C )C、DATA1 DB 34H, 12H23.下面指令执行后,可能改变AL寄存器内容的指令是(D )D、AND AL, BL24.操作数地址存放在寄存器的寻址方式称为(B )B、寄存器间接寻址25.用户为了解决自己的问题,用汇编语言所编写的程序,称为(B )B、汇编语言程序26.用DOS功能调用时,子功能调用的编号应放在(C )C、AH27.提供串指令中目的操作数地址的是(C )C、ES: [DI]28.在寄存器间接寻址方式下,能够提供有效地址的寄存器有(B )B、BX, BP, SI, DI29.已知某操作数的物理地址是2117AH,则它的段地址和偏移地址可能是(A )A、2025 : 0F2A30.中断向量表中的每个中断向量所占内存空间为:(B )B、4个字节二、填空(30题)1.在用直接寻址方式寻址操作数时,系统对段地址的默认值在段寄存器DS 中。
四川大学汇编语言程序设计期末试题附答案
四川大学期末考试试题(闭卷)考生承诺我已认真阅读并知晓《四川大学考场规则》和《四川大学本科学生考试违纪作弊处分规定(修 订)»,郑重承诺:1、 已按要求将考试禁止携带的文具用品或与考试有关的物品放置在指定地点;2、 不带手机进入考场;3、 考试期间遵守以上两项规定,若有违规行为,同意按照有关条款接受处理。
考生签名:2.以下标志位中,哪一个不属于状态标志位?((A ) CF ( B ) OF ( C IF ( D ) AF 3. 以下寄存器中,哪一个用于指示堆栈的栈顶位置? (A ) IP ( B ) SI ( C SP (D ) BX 4. 以下寄存器中,哪一个用于提供代码段的段基值? (A ) SS ( B ) DS ( C CS ( D ) AX 5.以下指令中,不影响标志位的是哪一条?( D (A ) INC ( B ) AND ( C ) SUB ( D ) XCHG第 1 页,共10页 试卷编号:)一、 单项选择题(本大题共20小题,每小题1分,共20分)提 示:在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在下面的表格中。
错选、多选或未选均无分。
(20152016学年第 1学期)课程号: 适用专业年级:课序号: 学生人数:课程名称: 印题份数:任课教师: 学号:成绩: 姓名:1.以下寄存器中,哪一个不属于地址指针寄存器?( (A ) AX ( B ) BX ( C ) SI ( D ) DI13.假设(AL) =05H,执行指令 ADD AL,0 后,(A) 0(B) 1(C) 2( D)6.SF 标志位的含义是如下哪一个?( A )(A)符号标志(B)零值标志 (C)补码溢出标志 (D) 进位标志7.LOOP 指令隐含使用如下哪一个寄存器作为计数器?( (A) AX(B) BX (C CX (D) DX 8.以下指令中,哪一条一定会访问堆栈段? ( D (A) DEC (B) ADD (C) MOV (D) CALL 9.以下伪指令中,用于结束一个段定义的是哪一个?( (A) END (B) SEGMENT ( C) ENDP D (D) ENDS 10.以下伪指令中,用于分配 一个字节空间的是哪一个? ( B (A) DB(B) DW (C) DD (D) EQU11.假设(AL) (A) 3FH =354 执行指令 AND AL,0FH 后, (AL) = ( D (B)F5H (C) 30H ( D) 05H12.假设(AL)(A) 0 =02H,执行指令 INC AL 后,CF = ( D )与执行INC 指令前一致 (B) 1 (C) 2 (D) 14.假设(AL) =88H,执行指令 SUB AL,90H 后,OF = ( A (A) 0 (B) 1(C) 2 ) (D)与执行ADD 旨令前一致 15.假设(AL) (A) 0 =68H (B) 1执行指令 ADD AL,08H 后, AF =( B ) (C) 2 ( D)与执行ADD 旨令前一致 16.假设(AL) (A) 80H =81H, (B) 18H (C) 03H 执行指令 ROL AL,1 后,(AL) = ( C )(D) 0C0H 17.假设(AL) (A) 0 =93H 执行指令SHL AL,1 (B) 1(C) 2后,OF= ( b(D) )与执行ADD 旨令前一致18.假设(SF) (A) 0058H =0060H 执行指令 pUSH AX 后, (B) 005EH (C) 0062H (D)(SP =( b 0060H19.假设CF=1,以下哪一条转移指令一定会转移至目标地址?( (A) JC(B) JNC (C) JS (D) JNZ 20.假设(BL) (A) 00H=04IH 执行指令 XOR BL,0FH 后,(BL) = ( D (B) 0FH (C) 04H ( D) 0BH 第2页,共10页PF = ( B ) 与执行SUB旨令前一致'在下表中。
烟台大学《汇编语言程序设计》期末考试复习题及参考答案
B. 03200H
C. 20120H
D. 21200H
答 案:C
48、下列指令中不能将AX清0的指令是( )。(2分)
A. SUB AX,AX
B. TEST AX,0
C. XOR AX,AX
D. AND AX,0
答 案:B
49、设AL=0A8H,CX=2,CF=1,执行RCLAL,CL指令后,AL中的值为( )(2分)
A. 80H
B. 160H
C. 80
D. 160
答 案:D
3、设AL=0AH,下列指令执行后能使AL=05H的是( )(2分)
A.NOT AL
B.AND AL,0FH
C.XOR AL,0FH
D.OR AL,0FH
答 案:C
4、CPU要访问的某一存储单元的实际地址称(2分)
A.段地址
B.偏移地址
C.物理地址
CBW
(2分)
A. AX=0FF82H
B. AX=8082H
C. AX=0082H
D. AX=0F82H
答 案:A
31、下面的数据传送指令中,错误的操作是( )(2分)
A. MOV SS:(BX+DI),1000H
B. MOV DX,1000H
C. MOV WORDPTR(BX),1000H
D. MOV DS,2000H
add ax,0f510h
A. of=1
B. cf=1
C. sf=1
D. zf=1
答 案:C
12、JMPWORDPTR(DI)的源操作数的物理地址是( )(2分)
A. 16D×(DS)+(BX)+(SI)
07级1-2班《汇编语言程序设计》期末考试卷(A卷,彭玄璋)
2008-2009学年第二学期 计算机科学学院07级(1)(2)班《汇编语言程序设计》期末考试卷 (A 卷)2、此试卷适用于计算机科学与技术本科专业。
一、填空题(本题共10小题,每个空1分,共20分) 1、已知存储器某单元地址表示为2314H :4132H ,则它的偏移地址= ,物理地址= 。
2、8086有 根地址线,可寻址存储空间为 。
3、一个字存入堆栈时,堆栈指针SP 修正;从堆栈中取出一个字时,SP 修正,SP 总是指向 。
4、由汇编程序在汇编过程中执行的指令为 。
5、下面是对DOS 功能调用方法的简单说明: (1)在AH 寄存器中存入所要调用功能的 ;(2)根据所调用功能的规定设置 ;(3)用 指令转入子程序入口。
(4)相应的子程序运行完后,可以按规定取得 。
6、与LEA BX ,TAB 等效的指令语句是 。
7、汇编语言程序设计有 、 和 等三种基本——————————————装————————————————订————————————————线————————————————————————————————结构形式。
8、设字节单元(01001H)=12H, (01002H)=45H, (01003H)=78H, 则字单元(01002H)= 。
9、当标志位____ _=1时表示无符号数运算产生溢出;而当标志位______=1是表示带符号数运算产生溢出。
10、宏定义开始用的伪指令是______________。
二、选择题(本题共10小题,每题1分,共10分)1.MOV SI , ES:[DI+BX]指令,源操作数的寻址方式是()A、寄存器相对寻址B、寄存器间接寻址C、基址加变址寻址D、相对的基址加变址寻址2.指令指针寄存器是()。
A、 IPB、 SPC、 BPD、 PSW3.可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是()。
A、AX,BX,CX,DXB、DS,ES,CS,SSC、SP,BP,IP,BXD、SI,DI,BP,BX4.完成将累加器AL 清零,并使进位标志CF 清零,下面错误的指令是( )。
汇编语言程序设计期末大作业
汇编语言程序设计期末大作业一、引言汇编语言是一种低级语言,直接操作计算机硬件。
虽然汇编语言相对于高级语言来说更加底层,编写汇编语言程序可能需要更多的代码和时间,但其执行效率和对硬件的控制程度是高级语言无法比拟的。
本期末大作业旨在通过设计并编写一个汇编语言程序,巩固并应用所学的汇编语言知识。
二、设计目标本次大作业的设计目标为实现一个简单的文件加密和解密程序。
用户可以通过命令行指定需要加密或解密的文件,以及密钥。
程序将读取文件的数据,使用密钥进行加密或解密操作,并将结果保存到相应的加密或解密文件中。
三、功能设计1.加密文件:用户通过命令行参数指定待加密的文件和密钥,程序读取文件的数据,使用密钥对数据进行加密,并将结果保存到加密文件中。
加密算法可以自定,但必须保证加密后的文件无法通过简单方法还原。
2.解密文件:用户通过命令行参数指定待解密的文件和密钥,程序读取文件的数据,使用密钥对数据进行解密,并将结果保存到解密文件中。
解密算法应与加密算法对应,能够正确还原加密的文件。
四、实现思路1.程序入口:使用指令跳转和条件判断实现程序的命令行参数解析,根据用户输入的参数确定是进行加密还是解密操作。
2.文件读取和写入:使用相应的系统调用实现对文件的读取和写入操作。
通过指定的文件路径打开文件并读取文件的数据,然后将加密或解密后的结果写入相应的加密或解密文件。
3.密钥和数据处理:将读取到的文件数据与密钥进行处理(加密或解密),处理的方式可以是异或运算、位移操作等。
具体实现可以参考课程中学习到的汇编指令和技巧。
将处理后的数据写入加密或解密文件中。
五、编程与调试在开始编写程序之前,可以先分析并确定所需的汇编指令和算法。
在编写过程中,要注重代码的可读性和可维护性,使用注释对关键代码进行解释和说明。
编码完成后,应进行逐条指令的调试,可以使用调试器进行单步调试,查看代码的执行情况和计算结果是否正确。
六、参考资料1.操作系统与实验教程2.汇编语言程序设计教材3.汇编语言在线学习资源七、总结通过本次汇编语言程序设计期末大作业,我深入理解了汇编语言的编程思想和机器指令的执行过程。
总汇编语言程序设计期末大作业。
汇编语言程序设计期末大作业:编写一完整的汇编语言源程序,实现从键盘输入一个班(不少于10人)的学生记录(学号:8位数字、姓名:不多余10个英文字符,语文:0-100的整数、数学:0-100的整数、英语:0-100的整数)后,(1)将输入的记录保存在C盘根目录下名为stuscore.dat的文件中;(2)按照各科成绩总分先高后低的顺序输出全部学生记录和排名顺序;(3)输出总分高于班平均总分的全部学生记录。
要求:元月4日前提交一份纸质报告(班长统一收齐)。
大作业格式:1.标题:汇编语言程序设计期末大作业2.作业题目:(上述)3.算法分析(流程图)4.实现代码(必须含注释)5.实验结果(汇编、连接、运行的截图)6.总结代码实现student struct ;定义结构Snumber db 11,0,11 dup(?)Sname db 11,0,11 dup(?)English db 4,0, 4 dup(?)Chinese db 4,0, 4 dup(?)Math db 4,0, 4 dup(?)Sum db 4,0, 4 dup(?)student ends;数据段data segmentmessMenu db '----------------The Homework of Assembler-----------------$'messMenu1 db '----------Name:TU LIN No:8000110028--------------$'messNext db'--------------------------------------------------------------------------------$'messName db 'Please input the student name(<11):$'messNum db 'Please input the student number(<11):$'messEnglish db 'Please input the English score:$'messChinese db 'Please input the Chinese score:$'messMath db 'Please input the Math score:$'mess1 db 'name:$'mess2 db 'number:$'mess3 db 'English:$'mess4 db 'Chinese:$'mess5 db 'Math:$'messSumScore db 'SumScore:$'MessTab db 09,'$' ;Tab 用于排列对齐StudAddress dw 10 dup(?) ;存各学生的偏移地址EnglishScore db 10 dup(?) ;存学生英语成绩的十进制数ChineseScore db 10 dup(?) ;存学生语文成绩的十进制数MathScore db 10 dup(?) ;存学生数学成绩的十进制数Average dw ?Buf db 6 dup(?)SumScore dw 10 dup(?) ;用于记录每个学生总分NumbersOfStudent db 0Stu student 10 dup(<>)SumRank db 0, 1, 2, 3, 4, 5, 6, 7, 8, 9FName db 'C:\StuScore.dat', 0;文件FileHandle dw ?;文件句柄EndOfFile dw 0ffhOtherLine db 0ah, 0dh, '$'FileSpace db " "data ends;堆栈段stack segmentdb 100h dup(?)stack ends;代码段code segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,ax ;将数据段首地址传给dsmov ax,stackmov ss,ax ;将堆栈段首地址传给ssmov sp,0call Endlinelea dx,messMenumov ah,09hint 21hcall Endlinelea dx,messMenu1mov ah,09hint 21hcall Endlinelea si,Stu ;取student的首地址给simov cx,10InputStu:call GetStudentlea dx,messNextmov ah,09hint 21hadd si,50loop InputStu ;输出循环结束lea si,Stucall GetEnglishScorecall GetChineseScorecall GetMathScorecall Stop ;程序运行停止一下,按回车键继续执行 call Writetofilecall stopcall SumAveragecall GetSumcall GetAddresscall SortStudentcall Stop ;程序运行暂停一下,按回车键,继续执行call ShowStumov ah,4chint 21h;============================================================;子程序名:GetStudent;功能:录入学生信息;============================================================ GetStudent proc nearpush sipush dxpush axpush cx ;子程序保护现场lea dx,messNamemov ah,9int 21hlea dx,[si].Snamemov ah,0Ahint 21hcall Endlinelea dx,messNummov ah,9int 21hlea dx,[si].Snumbermov ah,0Ahint 21hcall Endlinelea dx,messEnglishmov ah,9int 21hlea dx,[si].Englishmov ah,0Ahint 21hcall Endlinelea dx,messChinesemov ah,9int 21hlea dx,[si].Chinesemov ah,0Ahint 21hcall Endlinelea dx,messMathmov ah,9int 21hlea dx,[si].Mathmov ah,0Ahint 21hcall Endlinepop cxpop axpop dxpop siretGetStudent endp;============================================================ ;子程序名:TureShow;功能辅助子程序ShowStu,用于输出字符串;============================================================ TureShow proc nearpush dx ;保护相关寄存器push cxpush bxpush axmov bx,dx ;将bx指向缓存区的地址xor cx,cxmov cl,[bx+1] ;cl存放了缓存区录入的字符数LoopTS:mov dl,[bx+2] ;从第三个偏移地址开始显示mov ah,2 ;调用单个字符输出中断int 21hinc bxloop LoopTSpop axpop bxpop cxpop dxretTureShow endp;============================================================ ;子程序名:ShowStu;功能:显示学生信息记录;============================================================ ShowStu proc nearpush cxpush axpush dxpush sipush di ;保护现场call Endlinelea di,SumScorelea bx,StudAddressmov cx,10Loop1: mov si,word ptr[bx]lea dx,mess1mov ah,09hint 21hlea dx,[si].Snamecall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess2mov ah,09hint 21hlea dx,[si].Snumbercall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess3mov ah,09hint 21hlea dx,[si].Englishcall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess4mov ah,09hint 21hlea dx,[si].Chinesecall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess5mov ah,09hint 21hlea dx,[si].Mathcall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,messSumScoremov ah,09hint 21hmov ax,[di]call Outputcall Endlineadd bx,2add di,2loop Loop1lea dx,messNextmov ah,09hint 21hpop dipop sipop dxpop axpop cxretShowStu endp;============================================================= ;子程序名:Endline;功能:回车换行;============================================================= Endline proc nearpush ax ;保护相关寄存器push dxpush cxmov ah,2 ;回车mov dl,0ahint 21hmov ah,2 ;换行mov dl,0dhint 21hpop cxpop dxpop axretEndline endp;=============================================================;子程序名GetEnglishScores:;功能:将得到的指定个学生的分数以十进制保存到EnglishScore缓冲区中;============================================================= GetEnglishScore proc nearpush di ;保护相关寄存器push sipush dxpush cxpush bxpush axpush bplea si,Stu ;使si指向第一个学生的偏移地lea bp,EnglishScore ;使bp指向以十进制存学生分数的地址mov cx,10 ;共有指定个学生LoopScores0:push cx ;保护外循环的CX值lea bx,[si].English ;使bx指向学生字符分数缓冲区xor di,dixor cx,cxmov cl,[bx+1] ;学生字符分数缓冲区的字符数即使循环次数LoopScore0:mov al,[bx+2] ;从第三个偏移地址开始sub al,30h ;得到一个十进制值xor ah,ahxchg ax,di ;使其暂存到di,且将高位di的值乘10push si ;保护寄存器的原值push dxmov si,10mul si ;将si乘10,乘积低位保存在axpop dxpop sixchg ax,di ;将原来di中低位的值与高位的值ax交换回来add di,ax ;至此又录入一位十进制数inc bxloop LoopScore0mov ax,dimov ds:[bp],al ;将得到的十进制分数存入保存十进制分数缓冲区EnglishScore中add si,50 ;使di指向下一个学生的偏移地址inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数pop cx ;弹出外循环的CX值loop LoopScores0pop bppop axpop bxpop cxpop dxpop sipop diretGetEnglishScore endp;=============================================================;子程序名GetChineseScore:;功能:将得到的指定个学生的分数以十进制保存到ChineseScore缓冲区中;============================================================= GetChineseScore proc nearpush di ;保护相关寄存器push sipush dxpush cxpush bxpush axpush bplea si,Stu ;使di指向第一个学生的偏移地lea bp,ChineseScore ;使bp指向以十进制存学生分数的地址mov cx,10 ;共有指定个学生LoopScores1:push cx ;保护外循环的CX值lea bx,[si].Chinese ;使bx指向学生字符分数缓冲区xor di,dixor cx,cxmov cl,[bx+1] ;学生字符分数缓冲区的字符数即使循环次数LoopScore1:mov al,[bx+2] ;从第三个偏移地址开始sub al,30h ;得到一个十进制值xor ah,ahxchg ax,di ;使其暂存到si,且将高位si的值乘10push si ;保护寄存器的原值push dxmov si,10mul si ;将si乘10,乘积低位保存在axpop dxpop sixchg ax,di ;将原来si中低位的值与高位的值ax交换回来add di,ax ;至此又录入一位十进制数inc bxloop LoopScore1mov ax,dimov ds:[bp],al ;将得到的十进制分数存入保存十进制分数缓冲区ChineseScore中add si,50 ;使di指向下一个学生的偏移地址inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数pop cx ;弹出外循环的CX值loop LoopScores1pop bppop axpop bxpop cxpop dxpop sipop diretGetChineseScore endp;=============================================================;子程序名GetMathScore:;功能:将得到的指定个学生的数学分数以十进制保存到MathScore缓冲区中;============================================================= GetMathScore proc nearpush di ;保护相关寄存器push sipush dxpush cxpush bxpush axpush bplea si,Stu ;使di指向第一个学生的偏移地lea bp,MathScore ;使bp指向以十进制存学生分数的地址mov cx,10 ;共有指定个学生LoopScores2:push cx ;保护外循环的CX值lea bx,[si].Math ;使bx指向学生字符分数缓冲区xor di,dixor cx,cxmov cl,[bx+1] ;学生字符分数缓冲区的字符数即使循环次数LoopScore2:mov al,[bx+2] ;从第三个偏移地址开始sub al,30h ;得到一个十进制值xor ah,ahxchg ax,di ;使其暂存到si,且将高位si的值乘10push si ;保护寄存器的原值push dxmov si,10mul si ;将si乘10,乘积低位保存在axpop dxpop sixchg ax,di ;将原来si中低位的值与高位的值ax交换回来add di,ax ;至此又录入一位十进制数inc bxloop LoopScore2mov ax,dimov ds:[bp],al ;将得到的十进制分数存入保存十进制分数缓冲区MathScore中add si,50 ;使di指向下一个学生的偏移地址inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数pop cx ;弹出外循环的CX值loop LoopScores2pop bppop axpop bxpop cxpop dxpop sipop diretGetMathScore endp;==============================================================;子程序名:Writetofile;功能:用于创建文件并且存储学生信息;============================================================== Buildfile :push axpush cxpush dxmov ah, 3chmov cx, 00lea dx, FNameint 21hjc CreateFileErrormov FileHandle, axjmp CreateFileOkCreateFileError:mov ah, 09hmov dx, offset CreateFileErrorint 21hCreateFileOk:pop dxpop cxpop axretWriteToFile:push axpush bxpush cxpush dxpush dipush silea di, [si].SNamemov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx,FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].SNumbermov dx, dimov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].ChineseScore mov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].MathScore mov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].EnglishScore mov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].SumScore mov dx, dimov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteEndLinejmp WriteFileOkWriteFileError:lea dx,WriteFileErrormov ah, 09hint 21hWriteFileOk:pop sipop dipop dxpop cxpop bxpop axret;******************************************************************** WriteSpace:mov cx, 2lea dx, FileSpacemov bx, FileHandlemov ah, 40hint 21hret;******************************************************************** WriteEndLine:mov cx, 2lea dx, OtherLinemov bx, FileHandlemov ah, 40hint 21hretCloseFile:mov ah, 40hmov bx, FileHandlemov cx, 2lea dx, EndOfFileint 21hmov ah, 3ehmov bx, FileHandleint 21hret;============================================================== ;子程序名:GetSum;功能:用于计算出每个学生的各科成绩的总分;============================================================== GetSum proc nearpush axpush dipush sipush bxpush cxlea di,EnglishScorelea si,SumScoremov cx,10mov al,0LoopSum:mov ah,0mov al,[di]mov word ptr[si],axinc diadd si,2loop LoopSumlea di,ChineseScorelea si,SumScoremov cx,10mov al,0LoopSum1:mov ah,0mov al,[di]add word ptr[si],axinc diadd si,2loop LoopSum1lea di,MathScorelea si,SumScoremov cx,10mov al,0LoopSum2:mov ah,0mov al,[di]add word ptr[si],axinc diadd si,2loop LoopSum2pop cxpop bxpop sipop dipop axretGetSum endp;============================================================== ;子程序名:SumAverage;功能:用于计算出平均成绩,并输出总分高于平均分的学生记录;============================================================== SumAverage proc nearpush axpush bxpush cxpush dxpush simov cl, NumbersOfStudentmov ch, 0mov bx, cxmov ax, 0mov dx, 0mov si, offset SumScoreAverageLoop:add ax, word ptr [si]adc dx, 0add si, 2loop AverageLoopdiv bxmov Average, ax;输出高于平均成绩的同学mov dx, offset ShowBigThanAveragemov ah, 09hint 21hmov cl, SNumbermov ch, 0mov di, 0mov si, 0ShowBigThanAverage:mov ax, SumScore[si]cmp ax, Averagejl ShowBigOkmov dl, SumRank[di]mov al, type studentmul dlmov bx, axcall Outputadd si, 2inc diloop ShowBigThanAverageShowBigOk:mov dx, offset OtherLinemov ah, 09hint 21hpop sipop dxpop cxpop bxpop axretSumAverage endp;============================================================= ;子程序名:Output;功能:将ax中的二进制以十进制形式输出;============================================================== Output proc nearpush dipush bxpush axpush dxlea di,Bufadd di,6mov byte ptr[di],'$'mov bx,10CHANGE:dec dimov dx,0div bxadd dl,30hmov byte ptr[di],dlcmp ax,0jnz CHANGEmov dx,dimov ah,09hint 21hpop dxpop axpop bxpop diretOutput endp;============================================================= ;子程序名:GetAddress;功能:将指定个学生的偏移地址顺序保存到StudAddress;============================================================= GetAddress proc nearpush si ;保护相关寄存器push bxpush cxlea si,Stu ;使di指向第一个学生的偏移地址lea bx,StudAddress ;使bx指向存学生偏移地址的缓冲区mov cx,10 ;共有指定个学生LoopAdd:mov word ptr[bx],word ptr siadd bx,2 ;使bx指向存学生偏移地址的缓冲区的下一个地址add si,50 ;使di指向下一个学的生偏移地址loop LoopAddpop cxpop bxpop diretGetAddress endp;============================================================= ;子程序名:SortStudent;功能:根据学生分数进行排序;用冒泡法根据学生分数对分数从大到小排序;同时将对应的偏移地址进行排序;============================================================= SortStudent proc nearpush dxpush cxpush bxpush axpush dipush simov cx,10dec cxLoopChange0:push cx ;保护外循环的CX值lea bx,SumScore ; bx指向学生分数偏移地址lea si,StudAddress ;si指向存学生偏移地址的地址LoopChange1: ;将学生分数和下一个学生分数分别送入al,dl并比较大小;若当前学生分数小于下一个分数要交换其分数mov dx,word ptr[bx+2] ;此分数对应的学生的偏移地址mov ax,word ptr[bx]cmp ax,dxja EndExchange ;若大于则转而比较下两个分数值;交换偏移地址mov ax,word ptr [si+2] ;指定向ax中传入2个字节数据mov dx,word ptr [si]mov [si],axmov [si+2],dx;交换分数值mov ax,word ptr[bx+2]mov dx,word ptr[bx]mov word ptr[bx],axmov word ptr[bx+2],dxEndExchange:add si,2 ;指向下一个学生偏移地址的地址add bx,2 ;指向下一个存学生分数的地址loop LoopChange1pop cx ;保护外循环的CX值loop LoopChange0pop sipop dipop axpop bxpop cxpop dxretSortStudent endp;=============================================================;子程序名:MessTb;功能:输出1个Tab键;============================================================= MessTb proc nearpush dx ;保护相关寄存器push axlea dx,MessTab ;指向输出1个Tab键缓冲区mov ah,9 ;调用字符串输出程序int 21hpop axpop dxretMessTb endp;=================================================================== ;子程序名:Stop;功能是让程序停止运行一下,输入回车键继续执行;=================================================================== Stop proc nearpush ax ;保护相关寄存器push dxpush cxmov ah,1 ;回车int 21hpop cxpop dxpop axretStop endpcode endsend start。
【汇编语言程序设计】期末考试-试卷及参考答案
JC?EXIT
DONE:INC?BX
(3)LOOPNEXT;将计数器 CX 减 1,并判断是否继续下一次循环
EXIT:HLT
2.BUFFER 为起始地址的存储区域中存放有 100 个字节数据,现将其首、尾颠倒过来, 重新排放这 100 个字节数据。请在程序中的空格处填入适当的指令使其完整。 MOV?CX,32H;循环 50 次
letterDB26DUP(?) countEQU$-letter
dataENDS codeSEGMENT ASSUMEcs:code,da:data start:movax,data
movds,ax movcx,count leasi,letter moval,‘A’ next:mov[si],al
movah,9;9 号功能调用显示提示信息
int21h
汇编语言程序设计期末大作业
汇编语言程序设计期末大作业作为汇编语言程序设计的期末大作业,我选择了一个简单的任务,即编写一个能够对一组学生成绩进行排序的程序。
为了完成这个任务,我首先定义了一个存储学生数据的数组,每个学生的数据包括学生姓名和学生成绩。
然后,我使用冒泡排序算法对学生成绩进行排序。
冒泡排序算法的基本思想是从数组的第一个元素开始,依次比较相邻的两个元素,如果它们的顺序错误,则交换它们的位置。
这样一轮比较下来,最大的元素就会被移到数组的最后一个位置。
然后,我们对剩下的元素再次进行相同的比较和交换,直到整个数组都被排序。
在我的程序中,我使用了8086汇编语言编写了一个排序子程序。
这个子程序接受一个指向学生数据数组的指针和数组的长度作为输入,并使用冒泡排序算法对数组进行排序。
在排序过程中,我使用了一个内循环和一个外循环来实现比较和交换的操作。
内循环用于比较和交换数组中相邻的两个元素,而外循环用于控制内循环的次数,以保证整个数组都被排序。
在主程序中,我首先定义了一个存储学生数据的数组,并初始化了数组中的元素。
然后,我调用排序子程序,并传递数组的指针和长度作为参数。
排序子程序完成后,我打印排序后的学生数据,以展示程序的结果。
通过编写这个程序,我不仅复习了汇编语言的基本知识和技巧,还学会了使用冒泡排序算法对数据进行排序。
我发现在汇编语言中实现算法可能会比高级语言更复杂和繁琐,但它也提供了更大的灵活性和控制力。
此外,我通过这个项目还加深了对指针和数组的理解和应用,并提高了编写结构化程序的能力。
总的来说,这个汇编语言程序设计的期末大作业让我在实践中巩固了所学的知识,培养了解决问题和编写程序的能力。
通过不断地尝试和调试,我成功地实现了一个能够对一组学生成绩进行排序的程序。
这个过程对我个人的成长和学习是非常有意义的。
汇编语言程序设计期末考试题,DOC
汇编语言程序设计期末考试题学院(系):学号:姓名:计分:一、项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
每小题1分,共10分)1.CPU发出的访问存储器的地址是()A.物理地址B.偏移地址C.逻辑地址D.段地址2.将高级语言的程序翻译成机器码程序的实用程序是()A.编译程序B.汇编程序C.解释程序D.目标程序3.DECBYTEPTR[BX]指令中的操作数的数据类型是()A.4.5.6.A.7.8.若A.9.()码。
10.A.二、1.在2.3.8086/8088存储器分四个段,这四个段的段名所对应的段寄存器分别是________、________、________、________。
4.现有AX=2000H,BX=1200H,DS=3000H,DI=0002H,(31200H)=50H,(31201H)=02H,(31202H)=40H,请写出下列各条指令独立执行完后有关寄存器及存储单元的内容,并指出标志位ZF、CF的值。
A.ADDAX,1200H;问AX=________H,ZF=________B.SUBAX,BX;问AX=________H,ZF=________C.MOVAX,[BX];问AX=________HCF=________D.NEGWORDPTR[1200H];问(31200H)=________HCF=________5.设DS=2200H,BX=1000H,SI=0100H,偏移量D=0A2B1H,试计算出下列各种寻址方式下的有效地址,填入括号中。
A.使用D的直接寻址()B.使用BX的寄存器间接寻址()C.使用BX和D的寄存器相对寻址()D.使用BX、SI和D的相对基址变址寻址()E.使用BX、SI的基址变址寻址()三、简答题(共20分)1.程序在数据段中定义的数组如下:(4分)ARRAY DB 'YESIS'DB 20┇DB 'DONOT'请指出下列指令是否正确?若不正确,错在哪里?(答案做在旁边)??INC2.如AX寄存3.MOVCL,LENGTHTAB34.子程序的说明文件中应包括哪几方面的内容?(5分)5、分别指出下列指令中源操作数的寻址方式:(5分,答案写在对应指令的右边)A.MOVSI,100立即寻址B.MOVCX,DATA[SI]寄存器相对寻址C.MOV[SI],AX寄存器寻址D.ADDAX,[BX][DI]基址变址寻址三、简答题(共20分)1.A.正确B.数据类型不匹配错C.前两条指令正确,第三条数据类型不匹配D.前两条正确,后两条不正确,在汇编过程中,OFFSET操作将得到变量的偏移值,但对相对基址变址寻址方式形成的值在汇编指令时还是未知的,所以第三条指令不正确。
《汇编语言程序设计》期末复习题及答案
《汇编语言程序设计》期末复习题及答案一、选择(30题)1.下列是8位带符号二进制数的补码,其中最大的是( B )。
B、000000012.在一段汇编语言程序中多次调用另一段程序,用宏指令比用子程序实现( C )C、占内存空间大,但速度快3.数据定义为:EE DB 3,4CC DW 3456H,6789H执行指令“MOV CX,WORD PTR EE+1”后,(CX)= ( B )B、5604H4.有如下指令序列:MOV AL,95HMOV CL,2SAR AL,CL上述指令序列执行后,AL的内容是( D )D、0E5H5.设A=18610,B=2738,C=0BB16,把这三个数看成无符号数,则它们之间的关系是( D )D、A<B=C6.用一条指令实现寄存器BX和SI的内容相加,并将结果送入AX中,这条指令是( D )D、LEA AX,[BX][SI]7.要从端口1234H中读入8位数据,其指令应是( C )C、MOV DX,1234HIN AL,DX8.循环控制指令LOOPNZ/LOOPNE继续执行循环的条件是( B )B、CX≠0且ZF=09.8088/8086存储器分段,每个段不超过( D )D、64K个字节10.表示过程定义结束的伪指令是( A )A、ENDP11.用来存放下一条将要执行的指令代码段地址的段寄存器是( D )D、CS12.假定(SS)=1000H,(SP)=0100H,(AX)=5609H,执行指令PUSH AX后,存放数据56H的物理地址是( D )D、100FFH13.执行“SUB AX,[BP][DI]”指令,取源操作数时,使用的物理地址表达式是( A )A、16*SS+BP+DI14.设AX中有一带符号数8520H,执行“SAR AX,1”指令后,AX中的值是( C )C、0C290H15.设(BX)=1234H,(DS)=2000H,(21234H)=5678H,则指令“LEA SI,[BX]”执行后的结果是:( B )B、SI=1234H16.测试BL中的数是否为负数,若为负数则转移至AA1处,横线处的指令应为( A ) A、JNE17.设DF=0,(SI)=20H,(CX)=10,执行“REP LODSW”指令后,SI中的内容是( C )C、34H18.在程序执行过程中,IP寄存器中始终保存的是( B )B、下一条指令的首地址19.设SP初值为2000H,执行指令“POP AX”后,SP的值是( A )A、2002H20.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( A )A、1400H21.汇编源程序时,出现语法错误的语句是( A )A、MOV DS,1200H22.将数据1234H存放在存储单元中的伪指令是( C )C、DATA1 DB 34H,12H23.下面指令执行后,可能改变AL寄存器内容的指令是( D )D、AND AL,BL24.操作数地址存放在寄存器的寻址方式称为( B )B、寄存器间接寻址25.用户为了解决自己的问题,用汇编语言所编写的程序,称为( B )B、汇编语言程序26.用DOS功能调用时,子功能调用的编号应放在( C )C、AH27.提供串指令中目的操作数地址的是( C )C、ES:[DI]28.在寄存器间接寻址方式下,能够提供有效地址的寄存器有( B )B、BX,BP,SI,DI29.已知某操作数的物理地址是2117AH,则它的段地址和偏移地址可能是( A )A、2025∶0F2A30.中断向量表中的每个中断向量所占内存空间为:( B )B、4个字节二、填空(30题)1.在用直接寻址方式寻址操作数时,系统对段地址的默认值在段寄存器 DS 中。
《汇编语言程序的设计》期末复习试题_
《汇编语言程序的设计》期末复习试题_一、填空题1.一个十进制数35.625其对应的二进制数为100011.101B 、十六进制数为23H2.将 8存放在一个字单元中 , 则该单元中二进制代码是 0008H3.计算机软件分为两个部分即系统软件和应用软件而汇编程序属于系统软件 , 汇编语言应用程序属于应用软件4.把汇编语言源程序翻译成计算机能够识别、执行的目标程序的软件称为汇编程序5.8086/8088 CPU内部一般用来存放数据的寄存器有 AX BX CX DX6.8086/8088 CPU内部用来存放段地址寄存器的有 CS DS SS ES7.逻辑地址由段地址与偏移地址组成8.一个语句的名字项可以是标号或变量 , 在程序中它们两个在书写形式上的主要区别是标号以冒号结尾而变量不以冒号结尾9. 在 PSW 中 , 用以记录当前运算结果特征信息的那些位称为状态标志位 , 一般是由 CPU自动设置。
10.存储器单元与物理地址的关系是一一对应 ,在一个逻辑段内 , 每个单元对应的段地址是相同的 ,而偏移地址是不同的11.在 I/O接口中 , 为每个可访问的寄存器分配的地址是端口地址12.用以指示当前堆栈栈顶的指针寄存器是 SP13.机器指令是一组规定计算机的操作类型及相关操作数的二进制代码14. 假设执行指令前 BX=5678H, CL=8,指令 ROL BX, CL 执行后BX 的内容是7856H15.一条指令的基本结构一般由操作码字段和操作数字段两个部分组成。
16.8086/8088 存储器地址分段时,每个段起始地址的特征是二进制表示的地址中低四位都为 017.所谓“寻址方式”是指在指令中用以说明操作数所在地址或位置的方法18.在指令中直接给出操作数的寻址方式称为立即数寻址19.无符号数和带符号数的两组条件转移指令,每条指令都有完全等效的两个指令助记符,例如, JL 指令另一个指令助记符是 JNGE20.8086/8088指令系统中, 用以描述(说明寄存器操作数的寻址方式是寄存器寻址方式21.设 MASK 为一个变量 , 在“ MOV AX,MASK[SI+BX]”指令中 , 源操作数的寻址方式是基址变址寻址方式22.CPU执行“ JMP BX”指令只改变 2P 内容 ,而不改变 CS 内容。
汇编语言程序设计期末考试题
汇编语言程序设计期末考试题汇编语言程序设计期末考试题学院(系):学号: 姓名:计分:一、项选择题(在每小题得四个备选答案中,选出一个正确答案,并将正确答案得序号填在题干得括号内。
每小题1分,共10分)1.CPU发出得访问存储器得地址就是( )A.物理地址B、偏移地址C、逻辑地址 D、段地址2.将高级语言得程序翻译成机器码程序得实用程序就是( )A、编译程序B、汇编程序C、解释程序 D、目标程序3.DEC BYTE PTR[BX]指令中得操作数得数据类型就是( )A、字B、双字C、字节D、四字4.在下列语句中,BUFFER称为( )BUFFER DB 01H,0AHA、符号B、变量C、助记符 D、标号5.串操作指令中,源串操作数得段地址一定在( )寄存器中。
A、CS B、 SS C、DS D、 ES6.使计算机执行某种操作得命令就是()A、伪指令B、指令C、标号 D、助记符7.将数据5618H存放在存储单元中得伪指令就是( )A、 DATA1 DW 1856H B、 DATA1 DB 18H,56HC、 DATA1 EQU 5618H D、DATA1 DB 18H,00H,56H,00H8.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX =()A、1400H B、77F8H C、 0000H D、 0FFFFH9.计算机处理问题中会碰到大量得字符、符号,对此必须采用统一得二进制编码.目前,微机中普遍采用得就是( )码。
A、 BCD码B、二进制码C、ASCII码 D、十六进制码10.用指令得助记符、符号地址、标号与伪指令、宏指令以及规定得格式书写程序得语言称为( )A、汇编语言B、高级语言C、机器语言D、低级语言二、填空题(每空1分,共20分)1.在8086/8088汇编语言中,有五条串操作指令,其中搜索字符串指令得助记符就是______。
2.通常所说得计算机系统包括________与________两大部分。
《汇编语言程序设计》期末复习题.
《汇编语言程序设计》期末复习题.《汇编语言程序设计》期末复习题(2008秋季)1、现有(AX)=2000H,(BX)=1200H,(SI)=0002H,(DI)=0003H,(DS)=3000H,(SS)=3000H,(SP)=0000H,(31200H)=50H,(31201H)=02H,(31202H)=0F7H,(31203H)=90H请写出下列各条指令独立执行完后,有关寄存器及存储单元的内容,若该指令影响条件码,则请给出条件码SF,ZF,OF,CF的值。
1、ADD AX,1200H2、SUB AX,BX3、MOV [BX],AX4、PUSH AX5、DEC BYTE PTR [1200H]6、NEG WORD PTR [1200H]7、SAR BYTE PTR 1200[SI],18、ROL BYTE RTR [BX+SI+1],19、MUL WORD PTR [BX][SI]10、DVI BYTE PTR 1200[DI]2、假设(CS)=3000H,(DS)=4000H,(ES)=2000H,(SS)=5000H,(AX)=2060H,(BX)=3000H,(CX)=0005H,(DX)=0,(SI)=2060H,(DI)=3000H,(43000H)=0A006H,(23000H)=0B116H,(33000H)=0F802H,(25060H)=00B0H,(SP)=0FFFEH,(CF)=1,(DF)=1,请写出下列各条指令独立执行完后,有关寄存器及存储单元的内容,若该指令影响条件码,请给出条件码SF,ZF,OF,CF的值。
1、SBB AX,BX2、CMP AX,WORD PTR[SI+0FA0H]3、MUL BYTE PTR[BX]4、AAM5、DIV BH6、SAR AX,CL7、XOR AX,0FFE7H8、REP STOSB9、JMP WORD PTR [BX]10、XCHG AX,ES:[BX+SI]3、判断下列指令是否正确1、POP CS ()2、PUSH WORD PTR 20[BX+SI-2] ()3、LEA BX,4[BX] ()4、JMP BYTE PTR[BX] ()5、SAR AX,5 ()6、MOV BYTE PTR[BX],1000 ()7、CMP [DI],[SI] ()8、ADD BX,OFFSET A ()9、IN AL,DX ()10、MUL 25 ()4、填空(1)一个有16个字的数据区,它的起始地址为70A0:DDF6,那么该数据区的最后一个字单元物理地址为(H)(2)假设(SS)=2250H,(SP)=0140H,如果在堆栈中存入5个数据,则栈顶的物理地址为(H)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
call ShowStu mov ah,4ch int 21h
取student的首地址给si
输出循环结束
(2)按照各科成绩总分先高后低的顺序输出全部学生记录和排名顺序;
(3)输出总分高于班平均总分的全部学生记录。
要求:元月4日前提交一份纸质报告(班长统一收齐)。
大作业格式:
1.标题:汇编语言程序设计期末大作业
2.作业题目:(上述)
3.算法分析(流程图)
4.实现代码(必须含注释)
5.实验结果(汇编、连接、运行的截图)
Chi neseScore db 10 dup⑺
生语文成绩的十进制数
MathScore db10dup⑺生数学成绩的十进制数
Average
Buf db6dup⑺SumScore dw记录每个学生总分
NumbersOfStude nt
Stu stude nt 10 dup(<>)
dw?
10dup⑺
db0
stude nt ends
;数据段
data segme nt
messMe nu
db
'TheHomework
of
Assembler
----$'
messMe nu1
db
'Name:TU
LIN
No:8000110028------
$'
messNext
db
$'
messName db 'Please in put the stude nt n ame(<11):$' messNum db 'Please in put the stude nt nu mber(<11):$' messE nglish db 'Please in put the En glish score:$' messChi nese db 'Please in put the Chin ese score:$' messMath db 'Please in put the Math score:$' mess1db 'n ame:$'
6.总结
代码实现
stude nt struct;定义结构
Snu mber db 11,0,11 dup⑺
Sn ame db 11,0,11 dup⑺
En glish db 4,0, 4 dup⑺
Chinese db 4,0, 4 dup⑺
Math db 4,0, 4 dup⑺
Sum db 4,0ห้องสมุดไป่ตู้ 4 dup⑺
程序运行停止一下,按回车键继续执行
程序运行暂停一下,按回车键,继续执
;子程序名:GetStudent
;功能:录入学生信息
GetStude nt proc n ear
push si
push dx
push ax
push cx;子程序保护现场
lea dx,messName
mov ah,9
int 21h
lea dx,[si].S name
mov ah,0Ah
int 21h call En dli ne lea dx,messNum mov ah,9 int 21h lea dx,[si].S nu mber mov ah,OAh int 21h call En dli ne lea dx,messE nglish mov ah,9 int 21h lea dx,[si].E nglish mov ah,0Ah int 21h call En dli ne lea dx,messCh in ese mov ah,9 int 21h
lea dx,[si].Ch in ese mov ah,0Ah int 21h call En dli ne lea dx,messMath mov ah,9 int 21h lea dx,[si].Math mov ah,0Ah int 21h call En dli ne pop cx pop ax pop dx pop si ret
汇编语言程序设计期末大作业:
编写一完整的汇编语言源程序, 实现从键盘输入一个班(不少于10人)的学生记录(学号:8位数字、姓名:不多余10个英文字符,语文:0-100的整数、数学:0-100的整数、英语:0-100的整数)后,
(1)将输入的记录保存在C盘根目录下名为stuscore.dat的文件中;
mov ss,ax;
mov sp,0 call En dli ne lea dx,messMe nu mov ah,09h int 21h
将数据段首地址传给ds
将堆栈段首地址传给ss
call En dli ne lea dx,messMe nu1 mov ah,09h int 21h call En dli ne lea si,Stu;
FileSpace
db ""
i ends
data
;堆栈段
stack segme nt
db 100h dup⑺
stack ends
;代码段
code segme nt
assume cs:code,ds:data,ss:stack start: mov ax,data
mov ds,ax;
mov ax,stack
;Tab
用于排列对
;存各学生的偏移地址
存学
存学
存学
用于
SumRa nk
db 0, 1,2, 3, 4, 5, 6, 7, 8, 9
FName
db 'C:\StuScore.dat', 0;文件
FileHa ndle
dw ?;文件句柄
En dOfFile
dw 0ffh
OtherLi ne
db 0ah, 0dh, '$'
mov cx,10
In putStu:
call GetStude nt lea dx,messNext mov ah,09h int 21h add si,50 loop In putStu lea si,Stu call GetE nglishScore call GetCh in eseScore call GetMathScore call Stop;
mess2db 'nu mber:$'
db 'En glish:$' db 'Chi nese:$' db 'Math:$'
mess3
mess4
mess5 messSumScore db 'SumScore:$' MessTabdb 09,'$'
齐
StudAddress dw 10 dup⑺
En glishScore db 10 dup⑺生英语成绩的十进制数