汇编语言上机练习考题
- 格式:docx
- 大小:43.54 KB
- 文档页数:11
汇编语言试题及参考答案一,填空题1.ZF标志位是标志结果是否为零的,若结果,ZF为( 1 ),否则ZF为( 0 ).当ZF为1时,SF为( 0 )2.标号可以有两种类型属性.它们是( )和( )3.8位无符号整数的表示范围为0--255,写成16进制形式为( ),8位有符号整数的表示范围为-128--+127,写成16进制形式为( )4.伪指令DB,GROUP 和NAME 三个标号名字域必须有名字的是( ),不得有名字的是( ),可有可无名字的是( ).5.循环程序通常由( )( )( )和循环结果外理四部分构成6.在数值不达式中,各种运算符可可混合使用,其优先次序规则*,/( )于+,-;XOR,OR( )于AND,LT( )于GT7. 宏指令定义必须由伪指令( )开始,伪指令( )结束,两者之间的语句称为( )8.调用程序与子程序之间的参数传递方法有四种,即堆栈法( )( )( )9.分别用一条语句实现下述指明的功能(1)栈顶内容弹出送字变量AYW( )(2)双字变量AYD存放的地址指针送ES和SI( )(3)变量AY2类型属性送AH( )(4)不允许中断即关中断( )(5)将字符串'HOW ARE YOU!'存入变量AYB( )(6)子程序返回调用程序( )(7)地址表达式AYY[4]的偏移地址送字变量ADDR( )(8)AX的内容加1,要求不影响CF( )(9)BX的内容加1,要求影响所有标志位( )(10)若操作结果为零转向短号GOON( )二,单选题1.IBM PC微机中,有符号数是用( )表示的1.原码2.补码3.反码4.BCD码2.把汇编源程序变成代码程序的过程是( )1.编译2.汇编3.编辑4.链接三,己知:VAR1,VAR2的类型属性分别为字和字节,标号LPFAR的类型属性为FAR.指出下列非法语句的错误原因1.POP CS( )2.INC [BX] ( )3.MVL 8( )4.JLE LPFAR( )5.MOV DB,1800( )6.MOV[DI],VAR17.SUB AX,VAR2( )8.CMP SS AX( )四,简答题1.试述子程序的一般结构组成2.标号有哪三个属性其含义是什么3.试述CMP AX,BX和SUB AX,BX两条语句的异同点五,阅读如下程序段,回答所提出的问题,假定X1,X2,...XN为无符号数. ORG 100HBLOK DW X1,X2, (X)COUNT EQU ($-BLOK)/2RESULT DW COUNT,...LEA BX,BLOK-2MOV CX,RESULTXOR AX,AXGOON:ADD BX,2CMP AX,[BX]JAE NEXTMOV AX,[BX]NEXT:LOOP GOONMOV RESULT+2,AX程序段执行完,回答下述问题RESULT+2字存储单元的内容=( )BX=( )程序循环次数=( )六,在下述程序段的每一空框内填入一个语句(不得修改其它语句),以实现如下功能:字节变量STR中存放着一个字符串,以0DH为结束标志,试求串长度并送字变量COUNT中.LEA SI,STR( )XOR CX,CXGOON: CMP AL,[SI]( )INC CX( )JMP GOONNEXT:MOV COUNT,CX七,编制将DS段中名为BUFB的字节存储区改写为空白字符(编码为20H)的程序段.假定BUFB存储区定义为BUFB DB N DUP('^'),其中N 为字面常量.八,己知宏指令为:SHIFT MACRO RR,COUNTMOV AX,COUNTIF RR LE 64MOV CL,3SHR AX,CLIF RR LT 16MOV CL,6SHR AX,CLENDIFENDIFENDM宏调用为:SHIFT 15,7FFFHSHIFT 80,9FFFH写出宏扩展后的等效源程序段.九,编写完整程序,功能是把N个8个二进制数据转换成16进制字符数据.假定N个数据存放在字节变量VARB中,转换后的字符数据存放在HVARB中,提示0--9的字符码为30H--39H,A--F的字符码为41H--46H汇编语言试题<>答案一,填空题(1)1,0,0(2)NEAR或近程,FAR或远程(3)0--FFH,80H--7FH(4)GROUP,NAME,DB(5)循环准备,循环体,循环的控制与修改(6)高,低,等(7)MACRO,ENOM,宏体(8)约定寄存器法,约定存储单元法,向量传递法(9)(POP AYW)(LES SI,AYD)(MOV AH,TYPE AY2)(CLI)(AYB DB"HOW ARE YOU!")(RET)(MOV ADDR,OFFSET AYY[4])(INC AX)(ADD BX,1)(JZ GOON)二,选择题1. ( 2 )2. ( 2 )三,1.CS不能作目的操作数2.[BX]=义性3.乘法指令源操作数不能是立即数4.远程标号不能作为条件转移指令的操作数5.立即数不能直接送段寄存器6.两个操作数不能同时为存储器操作数7.操作数不配,AX为字,VAR2为字节8.段寄存器不能作为运算指令的操作数四,简答题1.由保存现场,取入口参数,加工处理,进也口友数,恢复现场和返回程序2.段属性指定义该标号的段地址偏移属性:指该标号的偏移地址类型属性:指标号是在定义它的段内引用还是在其它段引用3.相同点:都执行AX-BX操作,影响所有标志位且对档志位的影响相同不同点:CMP执行后AX,BX 内容不改变,而SUB执行后,AX内为AX-BX之差,即内容变化了五,MAX(X1,X2,...XN)(COUNT-1)六,(MOV AL,ODH)(JE NEXT或JZ NEXT)(INC SI)七,MOV AX,SEG BUFBMOV DS,AXLEA SI BUFBMOV CX,NGOON:MOV BYTE PTR[SI],20HINC SILOOP GOON八,MOV AX,7FFFHMOV CL,3SHR AX,CLMOV CL,6SHR AX,CLMOV AX,9FFFH九,DATA SEGMENTVARB DB 45,36,377Q, (11011011)N EQU $-VARBHVARB DB 2 NDRP( )DATA ENDSSTACK SEGMENT PARA STACK "STACK" DB 256 DUP( )STACK ENDSCODE SEGMENTASSUME CS:COOE,DS:DATA,SS:STACK MAIN: PROC FARPUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV DX,NLEA DI,HVARBLEA SI,VARB;置初值GOCN:MOV AH,[SI]MOV AL,AHAND AH,0F0HMOV CL,4SHR AH,CLCMP AH,9JNA NEXT1ADD AH,7NEXT1:ADD AH,30HAND AL,DFH CMP AL,9JNA NEXT2ADD AL,7NEXT2:ADD AL,30H MOV [DI],AHMOV [DI],ALADD DI,2INC SIDEC DXJNZ GOONRETMAIN ENDP CODE ENDSEND MAIN。
《汇编语言》练习题库
汇编语言是计算机硬件和软件之间的桥梁,是一种基于机器指令的
低级程序设计语言。
掌握汇编语言对于理解计算机的工作原理和进行
底层编程具有重要意义。
下面是一份《汇编语言》练习题库,旨在帮
助读者巩固和应用所学知识。
一、基础题
1. 使用汇编语言编写一个程序,实现两个数相加的功能。
2. 编写一个汇编语言程序,将一个字符串逆序输出。
3. 设计一个程序,判断一个数是否为偶数。
4. 编写一个程序,实现一个简单的计算器,可以进行加减乘除运算。
二、中级题
1. 设计一个程序,实现排序算法中的冒泡排序。
2. 编写一个汇编语言程序,判断一个字符串是否为回文串。
3. 设计一个程序,将一个数组中的奇数和偶数分别存放在两个新的
数组中。
4. 编写一个程序,实现一个简单的文本编辑器,可以实现插入、删除、替换等功能。
三、高级题
1. 设计一个程序,实现图像的旋转和缩放功能。
2. 编写一个汇编语言程序,实现一个简单的操作系统。
3. 设计一个程序,实现一个简易的数据库系统,可以进行数据的增删查改操作。
4. 编写一个程序,实现一个简单的网络聊天室。
以上是《汇编语言》练习题库的部分题目,通过做题可以提高对汇编语言的理解和应用能力。
同时,建议读者在做题的过程中,结合教材和其他学习资料,加深对汇编语言的学习和掌握。
祝愿大家在汇编语言的学习中取得优异的成绩!。
汇编语言试题及参考答案一、选择题(每题2分,共20分)1. 汇编语言中的指令通常由哪两部分组成?A. 操作码和操作数B. 地址和数据C. 指令和数据D. 操作码和地址答案:A2. 以下哪个不是汇编语言中的寻址方式?A. 直接寻址B. 间接寻址C. 立即寻址D. 寄存器寻址答案:B3. 在汇编语言中,以下哪个指令用于将数据从内存加载到寄存器中?A. MOVB. CMPC. ADDD. SUB答案:A4. 汇编语言中,以下哪个指令用于比较两个寄存器的内容?A. MOVB. CMPC. ADDD. SUB答案:B5. 在汇编语言中,以下哪个指令用于将一个寄存器的内容与立即数相加?A. MOVB. CMPC. ADDD. SUB答案:C6. 汇编语言中的条件跳转指令通常使用哪些条件?A. 零、非零B. 正、负C. 溢出、非溢出D. 所有上述条件答案:D7. 在汇编语言中,以下哪个指令用于将一个寄存器的内容与另一个寄存器的内容相减?A. MOVB. CMPC. ADDD. SUB答案:D8. 汇编语言中的循环结构通常使用哪种类型的跳转指令?A. 无条件跳转B. 条件跳转C. 直接跳转D. 间接跳转答案:B9. 在汇编语言中,以下哪个指令用于将一个寄存器的内容与内存中的内容相加?A. MOVB. CMPC. ADDD. SUB答案:C10. 汇编语言中,以下哪个指令用于将一个寄存器的内容与另一个寄存器的内容进行逻辑与操作?A. ANDB. ORC. NOTD. XOR答案:A二、填空题(每题2分,共20分)1. 在汇编语言中,指令MOV AX, BX的作用是将寄存器________的内容复制到寄存器________中。
答案:BX,AX2. 汇编语言中的指令JMP FAR PTR 100H:200H的作用是跳转到内存地址________。
答案:100H:200H3. 汇编语言中,指令CALL的作用是________。
汇编语言上机练习题1,1。
请输入任何字符串,并在颠倒顺序后显示在屏幕上。
2。
请输入任意字符串,计算空格和A的数量,并在屏幕上显示结果3.请输入任何字符串,删除其中的所有空格,并在屏幕上显示结果。
4.请输入任何字符串,用副本替换A,并在屏幕上显示结果5。
请输入任何字符串,用小写字母替换大写字母,并在屏幕上显示结果6.请输入任何字符串,删除所有英文字母,并在屏幕上显示结果。
二、7。
现有字符串是数据、名称、时间、文件、代码、路径、用户、退出、退出、文本。
请编写一个程序,从键盘输入4字符串,如果有的话,修改成磁盘,并在显示器上显示结果。
8。
现有的字符串集有随机存取存储器、是、红色、The、GET、FOR、AND、KEY、NOT、MAY。
请编写一个程序,按照ASCII的大小对它们进行排序,并在显示器上显示出来。
9。
现有的字符串集是数据、名称、时间、文件、代码、路径、用户、退出、退出、文本。
请编写一个程序,从键盘输入4个字符串,如果有的话,将其删除,并显示在显示器上。
10。
现有的字符串集有数据、名称、时间、文件、代码、路径、用户、退出、退出、文本。
请编写一个程序对以上个字符串进行排序(升序),并插入磁盘使它们保持有序,并在显示器上显示出来。
三、11。
键盘输入一个十进制数(字类型),以十六进制的形式输出12.键盘以二进制输出的形式输入一个十进制数(字类型)13.键盘输入一个二进制数(字类型),以十六进制的形式输出14.键盘以十进制输出的形式输入二进制数(字类型)15.键盘以十进制输出的形式输入一个十六进制数(字类型)16.键盘输入一个十六进制数(字类型),以二进制输出的形式(1)输入、转换和显示均以子程序形式编写2程序可以循环接收不同的十进制数并进行处理。
当非数字键被按下时,它退出主程序并返回操作系统。
四、17。
将一组带符号数字中的负数相加,计算负数的数量,并在屏幕上以十进制形式显示结果38H、4AH、0C5H、83H、9CH、0B4H、7FH、0C4H、05H、0F5H 18。
汇编语言试题题目一:寄存器及栈操作假设有一段汇编代码如下,请根据代码的功能回答相应的问题:push ebpmov ebp, espmov eax, dword ptr [ebp + 8]add eax, dword ptr [ebp + 12]pop ebpret1.以上汇编代码中,push ebp和pop ebp的作用分别是什么?2.mov ebp, esp的作用是什么?有什么作用范围?3.dword ptr是什么意思?4.请解释ret的作用。
解答:1.push ebp的作用是将ebp的值保存到栈中,而pop ebp的作用是将栈中的值弹出,并将其赋给ebp寄存器。
这是函数调用的常用操作,用来保存和恢复函数的堆栈帧。
12.mov ebp, esp的作用是将栈顶地址存入ebp寄存器中,以便在函数内部可以通过ebp寄存器来访问函数参数和局部变量。
作用范围是当前函数内部。
3.dword ptr是一个内存访问修饰符,用来指定要访问的内存单元的大小和类型。
在本题中,dword ptr指示要访问的内存单元是一个 32 位的双字(double word)。
4.ret指令用于函数返回,它将弹出栈顶的返回地址,并跳转到该地址执行,从而实现函数的返回。
题目二:条件分支和循环请完成以下汇编代码的功能描述,并回答相应问题:mov eax, 10mov ecx, 0loop:cmp eax, 0je endadd ecx, eaxdec eaxjmp loopend:1.请描述以上汇编代码的功能。
2.eax和ecx分别用来存储什么数据?请解释mov eax, 10和mov ecx,0的作用。
3.cmp eax, 0和je end的作用是什么?24.dec eax是什么意思?5.jmp loop的作用是什么?解答:1.以上汇编代码的功能是计算从 10 累加到 1 的结果,并将结果存储在ecx寄存器中。
2.eax用来存储循环计数器(初始值为 10),ecx用来存储累加结果。
计算机技术汇编语言试题含答案第一部分:选择题1. 汇编语言是计算机硬件的一种低级编程语言,其特点是()。
A. 高级、易读易写B. 低级、复杂C. 低级、易读易写D. 高级、复杂答案:C2. 汇编语言是一种()。
A. 人机交互语言B. 低级语言C. 高级语言D. 自然语言答案:B3. 汇编语言最主要的作用是()。
A. 提高计算机运行速度B. 完成特定的计算任务C. 方便程序员编写高级语言程序D. 简化计算机指令的执行过程答案:C4. 汇编语言的指令是由()组成的。
A. 二进制代码B. 十进制代码C. 字母和数字D. 中文字符答案:A5. 汇编语言与机器语言之间的关系是()。
A. 完全相同B. 相似但不完全一样C. 完全不同D. 无法确定答案:B第二部分:简答题1. 什么是汇编器?它的作用是什么?汇编器是一种用于将汇编语言代码翻译成机器代码的软件工具。
其作用是将人类可读的汇编语言指令转换成计算机能够理解的二进制代码,以便计算机能够执行相应的操作。
2. 谈谈汇编语言的优点和缺点。
汇编语言的优点包括:- 直接操作底层硬件,可精确控制计算机执行指令,提高程序执行效率。
- 可以直接访问和利用硬件资源,如寄存器、内存等。
- 可以编写高效的程序,适用于对性能要求较高的场景。
- 编写汇编语言程序相对来说较为简单,可以更好地理解计算机的工作原理。
汇编语言的缺点包括:- 难以学习和掌握,对于初学者来说门槛较高。
- 编写的程序复杂度高,维护困难。
- 汇编语言代码的可移植性差,不同的计算机体系结构需要不同的汇编指令集。
- 缺乏高级语言的抽象和封装特性,代码可读性差。
第三部分:编程题请编写一段汇编语言代码,实现将数组 A 中所有元素加 1 的功能。
数组 A 的起始地址保存在寄存器 AX 中,数组长度保存在寄存器 BX 中。
假设数组 A 的元素都是字节类型。
```asmMOV CX, 0 ; 用于循环计数的寄存器MOV SI, AX ; 用于保存数组起始地址的寄存器LOOP_START:MOV AL, [SI] ; 将当前数组元素的值加载到 AL 寄存器ADD AL, 1 ; 将 AL 寄存器中的值加 1MOV [SI], AL ; 将 AL 寄存器中的值存回数组对应位置INC CX ; 循环计数器加 1INC SI ; 数组地址指针加 1CMP CX, BX ; 比较循环计数器和数组长度JL LOOP_START ; 如果循环计数器小于数组长度,则跳转到LOOP_START 继续循环```答案:以上汇编语言代码实现了将数组 A 中的所有元素加 1 的功能。
汇编语言上机题汇编语言上机考试题1 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
3 将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。
4试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。
5 编写程序,将一个包含有16个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来(以一位十六进制数形式显示)。
6 试编写一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中。
7 试编写一个汇编语言程序,要求从键盘接收一个四位的16进制数,并在终端上显示与它等值的二进制数。
8设有一段英文,其字符变量名为ENG,并以$字符结束。
试编写一程序,查对单词SUN在该文中的出现次数9 从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果。
10 在STRING到STRING+99单元中存放着一个字符串,试编制一个程序测试该字符串中是否存在数字’0’-’9’,如有则把CL的第5位置1,否则将该位置0。
11在首地址为TABLE的数组中按递增次序存放着100H个16位补码数,试编写一个程序把出现次数最多的数及其出现次数分别存放于AX和CX中。
12 数据段中已定义了一个有n个字数据的数组M,试编写一程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中。
13 在首地址为DATA的字数组中存放着100H个16位补码数,试编写一个程序求出它们的平均值放在AX寄存器中;并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中。
14 把0~100D之间的30个数存入以GRADE为首地址的30字数组中,GRADE+i表示学号为i+1的学生的成绩。
汇编语言上机习题0:键盘输入字单元number的16进制数值,统计结果存放在变量one中,并且输入one的内容。
查询1的个数1 不用串操作指令,把字符串string1的内容传送到字符串string2,字符长度为count。
2试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCII 码为07)。
3 把AX中存放的16位二进制数K看作是8个二进制的"四分之一字节"。
试编写一程序片段,要求数一下值为3(即11B)的四分之一字节数,并将该数在终端上显示出来。
BEGIN: MOV DL, 0 ;计数初始值MOV CX, 8COMPARE: TEST AX, 03H ;是数03吗?JNZ NOEQUAL ;不是,转走INC DL ;是,计数NOEQUAL: ROR AX, 1 ;准备判断下一个数ROR AX, 1LOOP COMPAREADD DL, ‘0’;将计数值转换为ASCII码MOV AH, 2 ;进行显示INT 21HSTOP: RET4 有一个首地址为MEM的100D字数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。
DSEG SEGMENTMEM DW 100 DUP (?)DSEG ENDS;--------------------------------------------------------------------------CSEG SEGMENTMAIN PROC FARASSUME CS: CSEG, DS: DSEGSTART: PUSH DS ;设置返回DOSSUB AX, AXPUSH AXMOV AX, DSEGMOV DS, AX ;给DS赋值BEGIN: MOV SI, (100-1)*2 ;(SI)指向MEM的末元素的首地址MOV BX, -2 ;地址指针的初值MOV CX, 100COMP: ADD BX, 2CMP MEM [BX], 0JZ CONSLOOP COMPJMP FINISH ;比较完了,已无0则结束CONS: MOV DI, BXCONS1: CMP DI, SI ;到了最后单元码?JAE NOMOVMOV AX, MEM [DI+2] ;后面的元素向前移位MOV MEM [DI], AXADD DI, 2JMP CONS1NOMOV: MOV WORD PTR [SI], 0 ;最后单元补0LOOP COMPFINISH: RETMAIN ENDPCSEG ENDS ;以上定义代码段;--------------------------------------------------------------------------END START5 在STRING到STRING+99单元中存放着一个字符串,试编制一程序测试该字符串中是否存在数字。
汇编语言试题及答案一、选择题1. 汇编语言是一种:A. 高级语言B. 低级语言C. 机器语言D. 标记语言答案:B2. 汇编程序的编译过程包括:A. 预处理、编译、链接B. 编译、链接、运行C. 编译、预处理、链接D. 链接、编译、预处理答案:A3. 下列哪项是汇编语言的指令:A. MOV AX, BXB. int main()C. print "Hello, World!"D. System.out.println("Hello, World!");答案:A二、填空题4. 在汇编语言中,指令______用于将数据从内存传送到寄存器。
答案:MOV5. 汇编语言中的______指令用于实现无条件跳转。
答案:JMP6. 汇编语言中的______指令用于实现条件跳转。
答案:JZ 或 JE(零标志跳转)三、简答题7. 简述汇编语言的特点。
答案:汇编语言是一种低级语言,它非常接近机器语言,通常用于编写硬件操作和系统软件。
其特点是执行效率高,但编程复杂度高,可读性和可移植性较差。
8. 汇编语言与机器语言有何区别?答案:汇编语言是一种符号化的机器语言,它使用助记符代替机器语言中的二进制代码,更易于人类理解和编写。
机器语言则是计算机硬件直接执行的指令集,通常以二进制形式存在。
四、编程题9. 编写一段汇编语言程序,实现将AX寄存器的值加1。
答案:INC AX10. 编写一段汇编语言程序,实现将内存地址[100]处的值与BX寄存器的值相加,并将结果存回内存地址[100]。
答案:MOV AX, [100]ADD AX, BXMOV [100], AX五、论述题11. 论述汇编语言在现代计算机系统中的作用和局限性。
答案:汇编语言在现代计算机系统中主要用于系统底层开发、硬件驱动编写、嵌入式系统编程等领域。
其作用在于能够直接控制硬件,实现高效的资源利用。
然而,由于其复杂度高、可读性差、可移植性低,它在高级应用开发中的使用受到限制。
经典上机题
1.将BX中的二进制数转换成十六进制数在屏幕上显示出来。
2.将字符串‘asd&fghj&kl’中的最后一个符号’&’用空格代替,并在屏幕上显示替换后的字符串。
3.比较两个字符串,如果相同显示‘match’,不同显示’no match’。
4.键盘接收一个字符,找出其前导字符和后续字符,并按顺序在屏幕上显示出来。
5.将字符串‘asd&fghj&kl’中的第一个符号’&’用空格代替,并在屏幕上显示替换后的字符串。
6.用功能10接收一字符串,如果和在数据段已定义的口令‘hello’相同,则显示字符串‘welcome’,否则退出。
7.将数据段buf1中的字符串‘I am a student.’传送到附加数据段buf2中,然后在屏幕上显示buf2缓冲区中的结果。
8.键盘接收一个四位十六进制数转换成二进制数在屏幕上显示出来。
9.编写程序:从键盘接收一个小写字母,然后找出它的前导字符和后续字符,并转换成对应的大写字母按顺序显示出来。
10.编写一条宏指令CLRB,完成用空格符将一字符区中的字符代替的工作。
字符串的首址及其长度为变元,并显示缓冲区填充结果。
一、1.请任意输入一个字符串,将该串倒序后在屏幕上显示。
2.请任意输入一个字符串,统计其中空格和A的个数,并将结果显示在屏幕上。
3.请任意输入一个字符串,将其中的空格全部删除,并将结果显示在屏幕上。
4.请任意输入一个字符串,将其中A换成CC,并将结果显示在屏幕上。
5.请任意输入一个字符串,将其中大写字母换成小写字母,并将结果显示在屏幕上。
6.请任意输入一个字符串,将其中的英文字母全部删除,并将结果显示在屏幕上。
二、7.现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其修改为disk, 并将结果在显示器上显示。
8.现有一组字符串为ram,yes,red,the,get,for,and,key,not,may,请编写程序将他们按ASCII大小排序,并在显示器上显示。
9.现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其删除, 并在显示器上显示。
10.现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序将上述字符串排序(升序)并插入disk使其人仍然有序, 并在显示器上显示。
三、11.键盘输入一个十进制数(字类型),以十六进制的形式输出。
12.键盘输入一个十进制数(字类型),以二进制的形式输出。
13.键盘输入一个二进制数(字类型),以十六进制的形式输出。
14.键盘输入一个二进制数(字类型),以十进制的形式输出。
15.键盘输入一个十六进制数(字类型),以十进制的形式输出。
16.键盘输入一个十六进制数(字类型),以二进制的形式输出。
⑴输入、转换及显示均用子程序形式书写。
⑵程序能够循环接收不同的十进制数,并对之处理,当按下非数字键时退出主程序,返回操作系统。
汇编语言程序设计题库练习题1--详细答案汇编语言程序设计练习题一、单项选择题1、与100.5不相等的数据是【 C 】A. 64.8HB. 1100100.1BC. 64.5HD. 144.4O2、指向程序代码段的段寄存器是【 A 】A. CSB. DSC. SSD. FS3、在内存字单元(20000)中存放数1324H,即(20000)=1324H,则从字节单元20001H 中取出一个字节为【 A 】A. 13H B. 24HC. 1324HD. 2413H4、完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是【 A 】A. MOV AL,00HB. AND AL,00HC. XOR AL,ALD. SUB AL,AL5、指令JMP BX转移的目标地址的偏移量为【 C 】A. IP+BX的内容B. IP+[BX]C. BX的内容D. BX所指向的内存字单元的内容6、DA1 DW 2A05HDA2 DB 07AH┇MOV AL,BYTE PTR DA1SUB DA2,AL上述指令执行后,DA2中的内容是【 C 】A. 7AH B. 02AHC. 075HD. 050H7、某存储单元的物理地址是12345H,可以作为它的段地址有【 d 】A. 2345HB. 12345HC. 12340HD. 1234H8、设有数据定义X2 DW 10 DUP (0,1,2),定义了多少字节的缓冲【 C 】A. 6B. 30C. 60D. 409、有符号数AX除以2的指令是【 B 】A. SHR AX,1B. SAR AX,1C. ROR AX,1D. RCR AX,110、DEC BYTE PTR[BX]中的操作数的数据类型是【 C 】A. 字B. 双字C. 字节D. 四字11、设SP=4AH,执行段内返回指令RET后,SP的值是【 C 】A. 44HB. 48HC. 4CHD. 50H12、指令“LOOP 标号”转移到标号的的条件是【 A 】A. CX≠0B. ZF=0C. CX≠0 AND ZF=0D. CX≠0 OR ZF=108086二、填空题1、汇编语言源程序经【编译】后,形成目标文件,再经过【链接】后,形成可执行文件。
汇编语言上机操作一、DOS的基本操作命令1.显示磁盘文件目录命令 DIR格式:DIR [盘符:][路径][文件名][扩展名][/P][/W][/A:attrib][/O:order][/S][/B][/L][/P]:显示一屏后暂停,敲任一键继续[/W]:横向显示文件目录,每行显示5个文件名[/A:attrib]:显示指定属性的目录名和文件[/O:order]:以某种排序显示目录[/S]:在所有目录中搜索指定的文件并显示目录及文件名[/B]:仅列出文件名及扩展名,不显示文件长度、日期、时间[/L]:以小写字母显示文件及目录名2.建立子目录命令 MD3.45二、上机步骤一)汇编语言的工作环境要进行汇编语言的编辑和运行,需要以下工作环境:1、编辑程序,如EDIT.EXE、WORD、写字板2、汇编程序,如MASM.EXE3、连接程序,如LINK.EXE4、调试程序,如DEBUG.EXE二)汇编语言上机过程1、编辑源程序可用编辑程序编辑源程序,程序的扩展名为:.ASM。
如:XYZ.ASM2、汇编源程序使用汇编程序将源程序翻译成机器语言的目标程序。
目前使用最多的汇编程序是宏汇编程序MASM程序,使用MASM的格式:MASM *.ASM经MASM汇编后的源程序可能产生三个程序文件:目标程序文件*.OBJ、列表文件*.LST、交叉引用文件*.CRF。
·目标程序文件(.OBJ):是一个二进制代码文件,不能用DOS在屏幕上直接显示,也不能被计算机直接执行。
·列表文件(.LST):列出了源程序中的各个语句及对应的目标代码,各语句所属段内的偏移地址,使用的段名、段长度和属性,使用的标号、变量和符号的名字、类型和值。
·交叉引用文件(.CRF):为建立交叉引用表而生成的,交叉引用表给出了源程序中定义的所有符号(段名、变量名、标号等),对于每个符号列出了其定义的所在行和引用行好的情况,并按字母顺序排列。
汇编上机作业参考答案(上机作业实验题目:1:熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
2:编写程序,完成下面公式计算(其中变量X和Y是32位无符号数,变量A、B和Z是16位无符号数)A<-(X-Y+24)/Z的商B<-(X-Y+24)/Z的余数3:有单字节无符号数X,Y,Z,若X+Y>30,则求X+Z,否则则求X-Z,运算结果放入SUM单元中。
X,Y,Z,SUM 均为字节变量名。
(设X,Y,Z的值分别是 32,45,20,求得结果并输出;再设X,Y,Z 的值分别是 10,15,20,求得结果并输出。
要求尽量用DEBUG调试程序,修改数据。
)4:编写程序实现将数据段BUFF开始字节单元中的10个数字0,1,2,3,4,5,6,7,8,9转换成相应的ASCII码送入以ASC开始的内存单元。
(通过DEBUG指令查看程序执行结果)5:已知存储区有一首地址为ARRAY的字数组,元素个数为10,现在要求将数组的每个数据都加2(不考虑数据溢出)。
6:在一个字节数组ARRAY中找到第一个非零数据,如果找到,则显示第一个非0数据的下标,否则输出“NO FOUND”。
7:题目要求:在数据段以YVAR为首地址的区域中,存放有字数据,用串操作指令把第三个数据传送到数据段以MVAR为首地址的单元中。
8:与REP前缀相配合工作的MOVS串传送指令题目要求:在数据段以YVAR为首地址的区域中,存放有6个字的数据,用串操作指令把后4个字的数据传送到数据段以MVAR为首地址的4个字的单元中。
上机作业参考答案1:熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
2:编写程序,完成下面公式计算(其中变量X和Y是32位无符号数,变量A、B和Z是16位无符号数)A<-(X-Y+24)/Z的商B<-(X-Y+24)/Z的余数DATA1 SEGMENTX DD ?Y DD ?Z DW ?A DW ?B DW ?…DATA1 ENDSCODE1 SEGMENT…MOV AX,XMOV DA,X+2SUB AX,YSBB DX,Y+2ADD AX,24DADC DX,0DIV ZMOV A,AXMOV B,DX…3:有单字节无符号数X,Y,Z,若X+Y>30,则求X+Z,否则则求X-Z,运算结果放入SUM单元中。
计科09汇编语⾔上机综合题计科09级汇编语⾔10周上机综合题(邮件题⽬:计汇6--学号--姓名,附件上传为下⾯⽂件题号和它扩展名:如:6-1.DOC 6-2.DOC 6-3.DOC 注意:每个⽂件内容包括原程序+运⾏的3-5个窃图, 完成时间:2010年11⽉3⽇12时前,发送到计算机系(IP:10.2.132.2宋勤的SQ@/doc/1818189053.html邮箱中,如⼀题发送两次则扣20分)1、AA1、BB1数组分别在数据段存放10个1位的⼗进制数据,编程序:(1)把AA1数组与BB1数组中下标为奇数的数对换,并显⽰出对换前后的两数组来;(2)求出对换后两数组中各个的最⼤数,并⽤”MAX1=n1.”和”MAX2=n2“显⽰在屏幕上。
2、编程:(1)从键盘输⼊任意N个数(10-20个)并以$结束,把它们存放到数据段的BUF1数组中,(2)对BUF1中数据由⼩到⼤排序后存⼊到新的数组BUF2中,(3)把BUF2中的数进⾏求和结果放⼊数据段的SUM2单元中,再显⽰出和(SUM=?)的计数结果。
3、从键盘输⼊20个左右系列的字符(以回车符结束),并把它们存⼊数据区BUFFER数组中,并按数字及其字符分类,数值存放数据区NUB1中,字符放数据区CHAR1中;并分别统计并显⽰出这两类字符的个数;-------------------------下列程序为复习参考------------------------- 4、以⼆进制位串的形式,从⾼位到底位,在屏幕上显⽰AL中值,例如,AL=6AH,显⽰:01101010。
编写此程序段。
5、已知三个带符号的字节数据a,b,c存放在数据段ADR开始的连续单元中,在该段中另有⼀个FLAG地址单元,若a,b,c同时为正数则FLAG单元置0,若同时为负数,则FLAG单元置1,否则FLAG单元置全1,请编写完整源程序。
6、已知在数据区BUF1和BUF2分别存放20个字节数据。
习题一1.在计算机内部, 计算机能够直接实施程序语言是。
A.汇编语言B.C++语言C.机器语言D.高级语言2.在堆栈段中, 存放栈顶地址寄存器是。
A.IP B.SP C.BX D.BP3.指令指针寄存器IP用来存放代码段中偏移地址。
在程序运行过程中, 它一直指向。
A.下一条指令首地址B.下一条指令地址C.目前指令首地址D.目前指令地址4.编译程序功效是。
A.检验源程序中语法错误和逻辑错误B.将源程序编译成目标程序C.更正源程序中语法错误D.将高级语言源程序翻译成汇编语言源程序5.用户为了处理自己问题, 用汇编语言所编写程序, 称为。
A.目标程序B.源程序C.可实施程序D.汇编程序6.计算机中用来存放程序、数据等信息记忆装置是。
A.控制器B.运算器C.CPUD.存放器7.在宏汇编中,源程序必需经过____编译_______生成目标代码,然后用连接程序将其转化为可实施文件, 该文件可在系统中运行。
习题二1 当 SS =3000H,SP =0100H 时, 实施 PUSH AX 指令后, 堆栈顶部物理地址是()A.30100H B.30098H C.30102H D.300FEH2 设10000010B分别以原码、补码及反码表示时, 则对应十进制数依次是()A.-82、 -126、 -2 B.-2、 -125、 126C.-2、 -126、 -125 D.-82、 -125、 1253 标志寄存器中属于控制标志位是()A. DF, OF, SFB. DF, IF, TFC. OF, CF, PFD. AF, OF, SF4 设(AX)=4544H,在实施指令”SUB AH,AL”以后, ()A.CF=0,OF=0 B.CF=0,OF=1C.CF=1,OF=0 D.CF=1,OF=15 若寄存器AX、 BX、 CX、 DX内容分别为18, 19, 20, 21时, 依次实施PUSH AX,PUSH BX, POP CX, POP DX后, 寄存器CX内容为______19____________。
汇编语言试题及答案一、选择题1. 下列汇编指令中,用于加载立即数至寄存器的是:A. MOVB. ADDC. SUBD. XOR答案:A. MOV2. MOV指令中,源操作数与目的操作数的位数必须相同吗?A. 是B. 否答案:B. 否3. 下列指令中,用于从内存读取数据的是:A. MOVB. JMPC. ADDD. LEA答案:D. LEA4. 下列寻址方式中,可以直接给出操作数的地址的是:A. 直接寻址B. 间接寻址C. 寄存器寻址D. 寄存器间接寻址答案:A. 直接寻址5. CPU中的程序计数器(PC)用于保存:A. 下一条指令的地址B. 当前指令的地址C. 上一条指令的地址D. 中断服务程序的地址答案:A. 下一条指令的地址二、填空题1. 8086处理器的数据总线位数是_________。
答案:162. MOV AX, BX 汇编指令是将______的值复制到______。
答案:BX,AX3. 寻址方式LEA BX, [SI+DI]的含义是将_______与_______的和作为BX的值。
答案:SI,DI4. 8086处理器的寻址空间大小是_________。
答案:1MB5. 标志寄存器中的ZF标志位表示_________。
答案:零标志位,表示结果为零三、简答题1. 简述什么是汇编语言?汇编语言是一种底层的程序设计语言,通过使用助记符来代替具体的操作码,使得编写的代码易于阅读和理解。
汇编语言直接操作计算机硬件,与机器语言密切相关,最终会被翻译成机器语言运行在计算机上。
2. 什么是寄存器?寄存器是计算机内部用于存储数据和执行操作的高速存储器。
不同的计算机体系结构会有不同的寄存器数量和用途。
寄存器的访问速度非常快,因此在编写汇编语言代码时,经常使用寄存器来进行数据的操作和传递。
3. 请举例说明MOV指令的用法及其作用。
MOV指令用于将数据从一个位置复制到另一个位置。
它可以将立即数、寄存器或内存中的数据复制到目标寄存器或内存位置。
上机考试题型答案顺序结构程序1、对于三个8位无符号数86H、34H和21H,编写R=86H×34H-21H的程序。
DATAS SEGMENTNUM DB 86H,34H,21HRESULT DW ?DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXLEA SI,NUMLEA DI,RESULTMOV AL,[SI]MOV BL,[SI+1]MUL BL ;乘法存入AX寄存器MOV BL,[SI+2]MOV BH,0SUB AX,BXMOV [DI],AXMOV AH,4CHINT 21HCODES ENDSEND START;=6935 (01B17H)2、将字节存储单元A中的内容左移4位,B中的内容右移一位。
要求移位后的空位为0。
DATAS SEGMENTA DB 34HB DB 0A2HDATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV CL,4SHL A,CLSHR B,1MOV AH,4CHINT 21HCODES ENDSEND START分支结构程序1、设计字符比较程序,两个字符相同时,显示YES;不相国时,显示NO。
DATAS SEGMENTD1 DB 'A'D2 DB 'B'RES1 DB 'YES','$'RES2 DB 'NO','$'DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV AL,D1MOV BL,D2CMP AL,BLJNE NEXT1LEA DX,RES1JMP NEXT2NEXT1:LEA DX,RES2NEXT2:MOV AH,09HINT 21HMOV AH,4CHINT 21HCODES ENDSEND START2、设存储单元A和B各有一个无符号数,比较其大小,将较大数送A单元。
汇编语言上机练习考题(2009-01-23 20:54:37)标签:汇编语言考题教育分类:汇编语言程序设计键盘连续输入≤20个ASCII字符,如果是大写字母A~Z之间的字符,请将它们转换成相应的小写字符;若为其它字符,均转换为ASCII字符“SP”(20H)。
例如:输入:31H('1'),32H('2'),61H('a'),41H('A'),42H('B')...输出:20H('SP'),20H('SP'),20H('SP'),61H('a'),62H('b')...要求:要有输入、输出提示信息各占一行。
如下图所示:DATAS SEGMENTINPUT DB 'Please Input',0DH,0AH,'$'OUPUT DB 'Output',0DH,0AH,'$'BUF DB 21DB ?DB 21 dup(?)DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;----主程序代码段----LEA DX,INPUTMOV AH,9INT 21HLEA DX,BUFMOV AH,10INT 21HCALL CRLFLEA DX,OUPUTMOV AH,9INT 21HMOV BX,1MOV CL,BUF[BX] MOV CH,0 AGAIN:INC BXMOV DL,BUF[BX] CMP DL,'A'JB NEXTCMP DL,'Z'JA NEXTADD DL,20HJMP DISP NEXT:MOV DL,20H DISP:MOV AH,2INT 21HLOOP AGAINMOV AH,4CHINT 21H;----子程序定义---- CRLF PROCMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HRETCRLF ENDP;----子程序结束---- CODES ENDSEND START键盘连续输入≤20个字符,请将它们的ASCII码以16进制数的格式显示输出。
要求:要有输入、输出提示信息各占一行。
例如:输入:12aB3E4f...输出:31H,32H,61H,42H,33H,45H,34H,66H,...效果如下图所示:【解题答案】DATAS SEGMENTINPUT DB 'Please Input',0DH,0AH,'$'OUPUT DB 'Output',0DH,0AH,'$'BUF DB 21DB ?DB 21 dup(?)DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;----主程序代码段----LEA DX,INPUTMOV AH,9INT 21HLEA DX,BUFMOV AH,10INT 21HCALL CRLFLEA DX,OUPUTMOV AH,9INT 21HMOV BX,1MOV CL,BUF[BX]MOV CH,0AGAIN:PUSH CXMOV CL,4INC BXMOV DL,BUF[BX]SHR DL,CLADD DL,30HMOV AH,2INT 21HMOV DL,BUF[BX]AND DL,0FHADD DL,30HMOV AH,2INT 21HCALL HDHPOP CXLOOP AGAINMOV AH,4CHINT 21H;----16进制'H,'子程序定义---- HDH PROCMOV DL,'H'MOV AH,2INT 21HMOV DL,','MOV AH,2INT 21HRETHDH ENDP;----换行回车子程序定义----CRLF PROCMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HRETCRLF ENDP;----子程序结束----CODES ENDSEND START键盘连续输入≤20个ASCII字符,如果是小写字母a~z之间的字符,请将它们转换成相应的大写字符;若为其它字符,则不作转换。
并统计键盘输入的原20个ASCII字符中字符为“a”的个数。
最后,将转换的结果按输入顺序显示输出,之后显示原20个ASCII字符中字符为“a”的个数(按十进制数显示)。
要求:要有输入、输出提示信息各占一行。
例如:输入:31H('1')32H('2')61H('a')41H('A')42H('B')...输出:30H('1'),32H('2'),41H('A'),41H('A'),42H('B')...十进制数表示的“a”的个数效果如下图所示:【解题答案】DATAS SEGMENTINPUT DB 'Please Input:',0DH,0AH,'$' OUPUT DB 'Output:',0DH,0AH,'$'BUF DB 21DB ?DB 21 dup(?)DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;----主程序代码段----LEA DX,INPUTMOV AH,9INT 21HLEA DX,BUFMOV AH,10INT 21HCALL CRLFLEA DX,OUPUTMOV AH,9INT 21HMOV BL,0MOV SI,1MOV CL,BUF[SI]MOV CH,0AGAIN:INC SIMOV DL,BUF[SI]CMP DL,'a'JZ NUMBJB NEXTCMP DL,'z'JA NEXTJMP CONVERNUMB:INC BLCONVER:SUB DL,20HNEXT:MOV AH,2INT 21HLOOP AGAINCALL DISPMOV AH,4CHINT 21H;----回车换行子程序---- CRLF PROCMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HRETCRLF ENDP;----显示BL数据子程序---- DISP PROCMOV AL,BLMOV AH,0MOV BH,10DIV BHMOV BH,AHMOV DL,ALADD DL,30HMOV AH,2INT 21HMOV DL,BHADD DL,30HMOV AH,2INT 21HRETDISP ENDP;----子程序定义结束----CODES ENDSEND START键盘连续输入≤20个ASCII字符,需要对它们进行加密,其方法为:某个字符的十六进制数用高4位X1和低4位X2表示的话,如果X1大于等于X2,则X2=X1-X2;否则X1=X2-X1。
最后,将加密后的结果按按十六进制数显示输出。
要求:要有输入、输出提示信息各占一行。
例如:输入:41H('A')46H('F')...输出:43H,26H...效果如下图所示:【解题答案】DATAS SEGMENTINPUT DB 'Please Input:',0DH,0AH,'$'OUPUT DB 'Output:',0DH,0AH,'$'BUF DB 21DB ?DB 21 dup(?)DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;----主程序代码段----LEA DX,INPUTMOV AH,9INT 21HLEA DX,BUFMOV AH,10INT 21HCALL CRLFLEA DX,OUPUTMOV AH,9INT 21HMOV BL,0MOV SI,1MOV CL,BUF[SI]MOV CH,0AGAIN:PUSH CXMOV CL,4INC SIMOV DH,BUF[SI]SHR DH,CLMOV DL,BUF[SI]AND DL,0FHCMP DH,DLJB NEXTSUB DL,DHNEG DLJMP DISPLAYNEXT:SUB DH,DLNEG DHDISPLAY:CALL DISPPOP CXLOOP AGAINMOV AH,4CHINT 21H;----回车换行子程序----CRLF PROCMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HRETCRLF ENDP;----显示DH,DL,数据子程序---- DISP PROCPUSH DXMOV DL,DHADD DL,30HCMP DL,3AHJB NEXT1ADD DL,7HNEXT1:MOV AH,2INT 21HPOP DXADD DL,30HCMP DL,3AHJB NEXT2ADD DL,7HNEXT2:MOV AH,2INT 21HMOV DL,'H'MOV AH,2INT 21HMOV DL,','MOV AH,2INT 21HRETDISP ENDP;----子程序定义结束---- CODES ENDSEND START。