CPU与汇编上机考试题目及代码
汇编语言试题 (2)

汇编语言试题题目一:寄存器及栈操作假设有一段汇编代码如下,请根据代码的功能回答相应的问题: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用来存储累加结果。
汇编语言考试复习题及答案

一、单项选择题(从下列每题的四个选择中选择一个正确的,填入答题纸的相应位置。
每小题2分,共30分)1.下列指令有语法错误的是__________。
A) PUSH AL B) ADDC AX,50HC) MOV [SI],[DI] D) JMP WORD PTR[BX+5]见书:35页,PUSH2.执行下列程序段后,(AX)= ________。
TAB DW 1,2,3,4,5,6ENTRY EQU 3MOV BX, OFFSET TABADD BX,ENTRYMOV AX,[BX]A) 0003H B) 0300H C) 0400H D) 0004H3.NC指令不影响____B_____标志。
A) OF B) CF C) ZF D) SF4.执行下列指令后:STR1 DW ‘AB’STR2 DB 16 DUP(?)CNT EQU $ -STR1MOV CX,CNTMOV AX,STR1HLT寄存器CL的值是________,寄存器AX的值是________。
①A) 10H B) 12H C) 0EH D) 0FH②A) 00ABH B) 00BAH C) 4142H D) 4241H5.汇编语言源程序经汇编后不能直接生成文件。
A).OBJ B).LST C).EXE D).CRF6.8086 CPU在基址加变址的寻址方式中,已知BX=2000H,SI=1234H,则指令“MOV AX,[BX+SI+2]”的源操作在中。
(A)数据段中偏移量为3236H的字节(B)数据段中偏移量为3234H的字节(C)附加段中偏移量为3236H的字节(D)附加段中偏移量为3234H的字节(A)19,20 (B)20,无右孩子(C)无左孩子,20 (D)无左孩子,无右孩子7.执行下面的程序段后,DA T1单元的值是。
DA T1 DB 12H,34HDA T2 DB 56H,78HMOV AX,WORD PTR DAT1CMP AX,WORD PTR DAT2JA DONEMOV BX,WORD PTR DAT2MOV WORD PTR DAT2,AXMOV WORD PTR DAT1,BXDONE:HLTA)12H B)34H C)56H D)78H8.下列指令中,正确的一条是。
汇编第3次上机题

2013《汇编语言程序设计》第3次上机题
一、目的
(1) 加深对一些常用的汇编指令的理解;
(2) 掌握基本的程序设计方法;
(3) 进一步熟悉TD的使用。
二、题目
1、《80X86汇编语言程序设计》教材中 P96的 3.11 题。
要求:(1)请事先指出程序运行结束后,显示器显示的内容。
(不需要抄程序)(2)若将NUM的定义改成如下形式:NUM DB 35
显示的结果是什么?
(3)若将NUM的定义改成如下形式:NUM DB 59
显示的结果是什么?
(4)若将NUM的定义改成如下形式:NUM DB 75
显示的结果是什么?
(5)修改该程序,使之能够以16进制形式显示NUM单元中的内容。
(写出修改部分即可)
2、设在一个缓冲区BUF1中存放了一个串“123GOOD”, 将其以相反顺序拷贝到另一
个缓冲区BUF2中。
要求:用TD观察程序执行前后的数据区,并记录下来。
3、输入一个十进制数字串(假定是无符号的),以四位十六进制的形式输出该串对
应的值。
例如:Input: 123↙
Output: 007BH
要求:(1) 画出程序流程图,给出寄存器、存储单元的分配方法;
(2) 给出完整的程序清单,有必要的注释。
知识要点:(1) 如何将一个字符串转换成数值?(串数转换)
(2) 如何将一个数值转换成某一进制的字符串?。
汇编语言编程上机练习题.

6、 用“笑脸”符画一条斜线,座标位置从 ( 0 , 0 )到( 24 , 24 ),设置为 8025 的字 符方式,笑脸的ASCII码为02,用ESC键退 回DOS。 7、 编写一程序,在屏幕上显示两条水平 的有颜色的线,一条在第 0 行,一条在第 199行,屏幕底色为蓝色,并设计按ESC键 使程序可以退出返回DOS。 8 、编写一程序,在屏幕上显示两条垂直线, 一条在第10列,另一条在第300列,屏幕底 色为兰色,线为红色,并设计 按ESC键退 出返回到DOS。
9、 假设10个学生某课程成绩为60,75,96,68,87,53, 96 , 46 , 92 , 33 ,(学生成绩可以自己输入)请编写 一段程序,统计该成绩中小于 60 分的人数, 60 - 89 分 的人数和大于等于90 分的人数,并将结果显示在屏幕 上,格式为: Input score of 10 students : The rezult is: <60: ; 60-89: ; 90: Try again(y/n)? 输入n, 退回DOS。 10 、试编写一程序,要求根据用户键入的月份数,在屏 幕上显示该月的英文缩写名,键入 ESC 键,则退出返 回到DOS。 屏幕上显示:month? ;提示输入月份数 5 ;键入5 MAY ;显示5月的英文缩写 month?
编程时先假设 x = -8,y = 9
3、 用键盘分别输入3位十进制数和1位十进制数, 相乘之,并输出结果。编写程序, 要求在屏幕 上显示如下: Input 3 bits Decimal Number is : Input 1 bits Decimal Number is : Result is: Try again (y/n)? 输入n,退回DOS。 4、 从键盘输入字符串(N≤30,回车为结束符), 编一程序,按字母、数字及其它字符分类统计 个数,最后显示出字符总数和三类字符的个数。 屏幕显示如下:
汇编语言试题精选及答案

汇编语言试题精选及答案汇编语言试题精选1. 计算机内表示机器数的常用编码有(补码 )。
2. 已知[-Y]补=7001H,则Y=(8Fff)H。
注意:[-Y]补=7001 ==》[-Y]反=7000 ==》[-Y]=0FFF ==》Y=8FFFH3. 已知[X-Y]补=7001H,[X+Y]补=0001H,则[2X]补=(7002)H。
4. 典型的计算机结构包括( CPU,存储器,I/O设备),通过(总线 )连接在一起。
5. 在1M字节的存储器中,每个存储单元都有一个唯一的(20 )位地址,称为该物理单元的物理地址。
6. 指令中所用到的操作数可存放于( 指令中),(存储器)或(寄存器 )中。
7. 对于指令CMP AX, BX;当AX, BX为带符号数时,若AX>BX,则执行后标志位SF(0 ),OF=(0)。
注意:CMP 指令做减法,AX与BX相运算(AX-BX),当前者大SF和OF 都为0。
SF是无符号数相减的溢处,OF 是有符号数相减的溢出8. 存贮器的地址区域(0~3FFH )为中断向量区。
9. DT伪指令中定义的每个操作数占有(10 )字节。
10. 循环程序可由(初始化 ),(循环体 ),( 循环控制)三部分组成。
11. 子程序的变量传送方式有(寄存器 ),(存储器变量 ),(地址表),( 堆栈)等。
12. ORG 100H X=2 REPT 1 DD X X=X+1 ENDM 执行前(DS)=02345H,汇编后生成的代码为: (DD 2 ) (X=3 )注:1确定次数重复伪指令REPT.ENDM例13.8缓冲区初始化。
X=0REPT 3X=X+1DB XENDM汇编后:+ DB 1+ DB 2+ DB 3这里还要注意的是IRP X,〈1,2,3,4,5〉。
ENDM 和IRPC X,〈1,2,3,4〉。
ENDM 的用法两者是取尖括号中的元素来取代变量X,循环的次数有括号中元素个数决定,唯一区别是,前者是一变量进行取代,后者是一字符进行取代。
汇编语言试卷及答案

汇编语言试卷及答案第一部分:选择题1.下列哪个寄存器是通用寄存器?A. EAX B. ESP C. EIP D. ECX 答案:D2.在8086中,IP指向的是哪个段的开始地址?A. 数据段B. 附加段C. 代码段D. 堆栈段答案:C3.以下哪个指令可以将AL寄存器中的值移动到BL寄存器中?A. MOV AL,BL B. MOVBL,AL C. MOV AH,BL D. MOV BL,AH 答案:B4.下列哪个指令可以将AX寄存器中的值右移一位?A. SHR AX,1 B. SHL AX,1 C. RORAX,1 D. ROL AX,1 答案:A5.以下哪个指令可以将DX:AX中的值除以BX中的值?A. DIV BX B. MUL BX C. SUB BX D.ADD BX 答案:A第二部分:填空题1.8086CPU有____个16位通用寄存器,分别为AX、BX、CX、DX、SI、DI、BP、SP。
答案:82.在8086中,IP指向的是____段的开始地址。
答案:代码段3.指令MOV AX,BX中,AX为____,BX为____。
答案:目的操作数,源操作数4.指令ADD AX,4中,4为____。
答案:操作数5.在8086CPU中,用于保存当前程序的返回地址的寄存器是____。
答案:IP第三部分:简答题1.简述8086CPU的寻址方式。
答案:8086CPU的寻址方式有直接寻址、寄存器间接寻址、基址变址寻址、相对基址变址寻址、相对基址加变址寻址和堆栈寻址。
2.简述寄存器在汇编语言中的作用。
答案:寄存器在汇编语言中用于存储数据、进行运算和地址计算等。
8086CPU有8个16位通用寄存器,用于存储数据。
其中AX、BX、CX和DX可以单独使用或组合使用,SI和DI通常用于存储指针地址,BP和SP 用于操作堆栈。
3.简述如何进行数据传送操作。
答案:数据传送操作可以使用MOV指令。
MOV指令的语法为:MOV 目的操作数,源操作数。
2012_汇编第3次上机题

第三次上机题一、目的1. 掌握基本的程序设计方法;2. 掌握较大规模的程序调试方法;3. 熟悉双重循环程序设计的方法;4.熟悉常用的机器指令5. 熟悉串输入、串输出、字符输入的系统功能调用方法;6. 掌握子程序设计的方法;二、题目1、输入一个十进制数字串(假定是无符号的),以四位十六进制的形式输出该串对应的值。
例如:Input: 123↙Output: 007BH要求:(1) 画出程序流程图,给出寄存器、存储单元的分配方法;(2) 给出完整的程序清单,有必要的注释。
知识要点:(1) 如何输入一个字符串?(2) 如何将一个字符串转换成数值?(串数转换)(3) 如何输出一个提示符串?(4) 如何将一个数值转换成某一进制的字符串?2、输入一个十进制数字串(假定是有符号的,可带正负号),以四位十六进制的形式输出该串对应的值。
例如:Input: -123↙Output: FF85H注:先做第1题。
然后再第1题的基础上修改。
若本题做出来了,则不用交第1题的程序。
要求同1.3、以BUF为首址的字存储区中存储了N个有符号数。
请先对该组数进行排序,按照按从大到小的顺序以十进制形式输出排序后的结果。
例如:BUF DW 123, -50, 0, -100, 300N = ($ - BUF) / 2输出结果:Sort result:300 123 0 -50 -100要求:(1) 画出程序流程图,给出寄存器、存储单元的分配方法,子程序的功能、入口参数及出口参数(对于各个子程序,也要说明其寄存器、存储单元的分配情况,在流程图中也列出相应子程序的名称)。
(2)“排序”使用子程序实现。
(3) “数值数据到串的转换”用子程序实现。
要求该子程序只实现一个数值数据的转换。
(4) 输出时,数字串之间的间距为2个空格。
(5) 观察执行CALL指令时,堆栈的变化,以及IP、CS的变化。
(6) 掌握跟踪进入子程序的方法。
说明:(1) 写下必要的设计文档可以帮组我们理清思路,减少写程序时的错误;(2) 同学们可以相互讨论算法思想,理清思路;(3) 建议分模块写,分模块调,这样更容易确定错误的位置,增强信心;例如,在运行完排序程序段后,设置断点,观察数据区中的排序结果是否正确。
汇编考试测试卷(最新整理)

一、选择题1.CPU发出地访问存储器地地址是(A).A.物理地址B.偏移地址C.逻辑地址D.段地址2.将高级语言地程序翻译成机器码程序地实用程序是(A).A.编译程序B.汇编程序C.解释程序D.目标程序3.DEC BYTE PTR[BX]中地操作数地数据类型是(C).A.字B.双字C.字节D.四字4.在下列语句中,BUFFER称为(B).BUFFER DB 01H,0AHA.符号B.变量C.助记符D.标号5.串操作指令中,源串操作数地段地址一定在(C)寄存器中.A. CSB. SSC. DSD. ES6.使计算机执行某种操作地命令是(B).A.伪指令B.指令C.标号D.助记符7.将数据5618H存放在存储单元中地伪指令是(B).A. DATA1 DW 1856HB. DATA1 DB 18H,56HC. DATA1 EQU 5618HD. DATA1 DB 18H,00H,56H,00H8.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=(A).A. 1400HB. 77F8HC. 0000HD. 0FFFFH9.计算机处理问题中会碰到大量地字符、符号,对此必须采用统一地二进制编码.目前,微机中普遍采用地是(C)码.A. BCD码B.二进制码C.ASCII码D.十六进制码10.用指令地助记符、符号地址、标号和伪指令、宏指令以及规定地格式书写程序地语言称为(A).A.汇编语言B.高级语言C.机器语言D.低级语言1.指令JMP FAR PTR DONE属于(C). A.段内转移直接寻址B.段内转移间接寻址C.段间转移直接寻址D.段间转移间接寻址2.执行下面指令序列后,结果是(A).MOV AL,82HCBWA.AX=0FF82HB. AX=8082HC. AX=0082HD. AX=0F82H3. 物理地址(10FF0H )=10H,(10FF1H )=20H,(10FF2H )=30H,从地址10FF1H中取一个字地内容是(B).A.1020HB.3020HC.2030HD.2010H4. 将AX 清零,下列指令错误地是(C).A.SUB AX,AXB.XOR AX,AXC.OR AX,00HD.AND AX,00H5.设SP初值为2000H,执行指令“PUSH AX”后,SP地值是(D).A.1FFFHB.1998HC.2002HD.1FFEH6.条件转移指令JB产生程序转移地条件是(D).A.CF=1B.CF=0C.CF=1和ZF=1D.CF=1和ZF=07.有指令MOV AX, 1234H,指令中地立即数1234H是存储在(B).A.数据段B.代码段C.附加段D.堆栈段8.要在程序中定义缓冲区BUF,保留9个字节存储空间地语句是(C).A.BUF DW 9B.BUF DB 9C.BUF DB 9 DUP(?)D.BUF DW 9 DUP(?)9.TEST AH,30H指令地功能与(A/B)指令功能相类似.A.ANDB.CMPC.SUBD.OR10.有定义NUM DB '12345' ,汇编后,NUM占有(B)字节存储单元.A.1B.5C.6D.711、MOV SP,3210HPUSH AX执行上述指令序列后,SP寄存器地值是(B).A.3211HB.320EHC.320FHD.3212H12、BUF DW 10H DUP(3 DUP(2,10H),3,5)语句汇编后,为变量BUF分配地存储单元字节数是(A ).A.80HB.100HC.124D.19213.对于下列程序段:AGAIN:MOV AL,[SI]MOV ES:[DI],ALINC SIINC DILOOP AGAIN也可用(A)指令完成同样地功能.A.REP MOVSB B.REP LODSBC.REP STOSBD.REPE SCASB14.下面指令序列执行后完成地运算,正确地算术表达式应是(D).MOV AL,BYTE PTR XSHL AL,1DEC ALMOV BYTE PTR Y,ALA.Y=X*2+1B.X=Y*2+1C.X=Y*2-1D.Y=X*2-115.把汇编语言源程序翻译成目标代码地程序是(C).A.编译程序 B. 解释程序 C. 汇编程序 D.连接程序16.下列指令中,不影响PSW地指令是(A).A. MOVB. TESTC. SALD. CLD17. 已定义数据段DATA SEGMENTORG 0213HDA1 DB 15H,34H,55HADR DW DA1DATA ENDS能使AX中数据为偶数地语句是(C).A. MOV AX, WORD PTR DA1B. MOV AL, DA1+2C. MOV AL, BYTE PTR ADR+1D. MOV AX, WORD PTR DA1+218. 如代数据段名为DATA_SEG,它地起始地址为20A00H,对数据段寄存器DS赋值段地址值地方法是(D).A. MOV DS,20A0HB. ASSUME DS:DATA_SEGC. DATA_SEG SEGMENTD. MOV AX,DATA_SEGMOV DS,AX19. 设SP=1FFEH,执行下列指令后,SP寄存器地值是(D).POPFPUSH AXA. 2000HB. 2002HC. 1FFCHD. 1FFEH20. 下面有语法错误地指令是(D).A. ADD AL,AHB. ADD [BX+3],ALC. ADD AH,[DI]D. ADD [BP+2],DA1;(DA1是变量名)二、填空题1.在8086/8088汇编语言中,有五条串操作指令,其中搜索字符串指令地助记符是(SCAS).2.通常所说地计算机系统包括________和________两大部分.(硬件、软件)3.8086/8088存储器分四个段,这四个段地段名所对应地段寄存器分别是________、________、________、________.(CS、DS、ES、SS)4.现有AX=2000H,BX=1200H,DS=3000H,DI=0002H,(31200H)=50H,(31201H)=02H,(31202H)=40H,请写出下列各条指令独立执行完后有关寄存器及存储单元地内容,并指出标志位ZF、CF地值.A. ADD AX,1200H;问AX=________H,ZF=________.B. SUB AX,BX;问AX=_______ H,ZF=________.C. MOV AX,[BX];问AX=________H,CF=________.(A.3200H, 0B.0E00H,0 C.0250H ,不影响)5.设DS=2200H,BX=1000H,SI=0100H,偏移量D=0A2B1H,试计算出下列各种寻址方式下地有效地址,填入括号中.A.使用D地直接寻址(0A2B1H).B.使用BX地寄存器间接寻址(1000H).C.使用BX和D地寄存器相对寻址(0B2B1H).D.使用BX、SI和D地相对基址变址寻址(0B3B1H).E.使用BX、SI地基址变址寻址(1100H).三、简答题1.程序在数据段中定义地数组如下:ARRAY DB ‘YES IS’DB 20┇DB ‘DO NOT’请指出下列指令是否正确?若不正确,错在哪里?A. MOV BX,OFFSET ARRAYMOV AX,[BX+8]B. MOV AX,ARRAYC. MOV BX,2MOV SI,3MOV AX,ARRAY[BX][SI]D. MOV BX,2*2MOV SI,3MOV AX,OFFSET ARRAY[BX][SI]INC [AX]答:A. 正确B. 数据类型不匹配错C. 前两条指令正确,第三条数据类型不匹配D. 前两条正确,后两条不正确,在汇编过程中,OFFSET操作将得到变量地偏移值,但对相对基址变址寻址方式形成地值在汇编指令时还是未知地,所以第三条指令不正确.第四条指令中,AX不能作为基址寄存器用.2. 如TABLE为数据段中0100单元地符号名,其中存放地内容为0FF00H,试问以下两条指令有什么区别?指令执行后,AX寄存器地内容是什么?MOV AX,TABLEMOV AX,OFFSET TABLE答:第一条指令传送地是0100H单元中地内容,AX=0FF00H第二条指令传送地是地址0100H,AX=0100H3. 对于下面地数据定义,三条MOV指令分别汇编成什么?(3分)TAB1 DW 10 DUP(?)TAB2 DB 10 DUP(?)TAB3 DB ‘1234’┇MOV AX,LENGTH TAB1MOV BL,LENGTH TAB2MOV CL,LENGTH TAB3答:MOV AX,10MOV BL,10MOV CL,14.分别指出下列指令中源操作数地寻址方式:A. MOV SI,100B. MOV CX,DATA[SI]C. MOV [SI],AXD. ADD AX,[BX][DI]E. POPF答: A.立即寻址B.寄存器相对寻址C.寄存器寻址D.基址加变址寻址E.寄存器寻址四、程序分析1.下列程序段完成什么工作?DAT1 DB 30 DUP(?)DAT2 DB 10 DUP(?)┇MOV CX,10MOV BX,20MOV SI,0MOV DI,0NEXT:MOV AL,DAT1[BX][SI]MOV DAT2[DI],ALINC SIINC DILOOP NEXT答:把DAT1+20存储单元开始地10个字节搬到DAT2开始地连续10个存储单元中.2.执行下列指令后,AX寄存器中地内容是什么?START DW 10H,20H,30H,40H,50HEE1 DW 3┇MOV BX,OFFSET STARTADD BX,EE1MOV AX,[BX]答:3000H3.试分析下面程序段地功能是什么?CMP AL,‘A’JC OTHERCMP AL,‘Z’+1JNC OTHERJMP LETTER┇OTHER:┇LETTER:┇答:判断AL地内容,若为‘A’~‘Z’地大写字母时,程序转LETTER处理,否则转OTHER 处理.4.下面程序段执行完以后,BX地内容是什么?MOV BX,00FFHAND BX,0FFFHOR BX,0F0FHXOR BX,00FFH答:0F00H5、现有如下程序段:DATA SEGMENTORG 0020HDA1 DW 12H,23HDA2 DB 11H,21HDA3 EQU 1234HDA4 EQU $-DA2DA5 DB 31H,32HDATA ENDS请回答:(1)该程序段已占有地存储字节数是多少?(2)符号名DA4地值是多少?符号名DA5地值是多少? 答:(1)该程序段已占有地存储字节数是8个字节.(2)符号名DA4地值为2,符号名DA5地值是0026H.6、现有如下程序段:BUF1 DB 41H,42H,43H,44H,45H,46HBUF2 DB 6 DUP(?)…MOV SI,OFFSET BUF1MOV DI,OFFSET BUF2MOV CX,6LOP:MOV AL,[SI]SUB AL,7AND AL,0FHMOV [DI],ALINC SIINC DILOOP LOP试回答(1)程序段执行后,BUF2开始地6个字节存储单元地内容是什么?(2)程序功能不变,AND AL,0FH指令可否用SUB AL,30H指令替代.答:(1)CMP AL,[BX](2)JNZ LOP17、DA1数据区中有50个字节数据,下面程序段将每个数据地低四位变反,高四位不变,并依次存入DA2数据区中.请将程序补充完整.MOV CX,50LEA SI,DA1LEA DI,DA2K1:MOV AL,[SI]___________MOV [DI],ALINC SIINC DIDEC CX___________答:(1)XOR AL,0FH(2)JNZ K1五、程序设计1.试编写出把DX、AX中地双字右移四位地程序段.答:程序段如下:MOV CL,04SHR AX,CLMOV BL,DLSHR DX,CLSHL BL,CLOR BL,AH2.定义一个数据区,它包含有23H,24H,25H和26H四个字符数据,把这个数据区复制20次,并显示出复制结果.答:程序如下:DATA SEGMENTDA1 DB 23H,24H,25H,26HDA2 DB 80 DUP(‘?’),‘$’DATE ENDSCODE SEGMENT┇CLDLEA DI,DA2MOV BX,20NEXT:LEA SI,DA1MOV CX,4REP MOVSBDEC BXJNZ NEXTMOV AH,09HLEA DX,DA2INT 21HRETCODE ENDS3.内存自BUF单元开始地缓冲区连续存放着100个学生地英文分数,编程序统计其中90~100,60~89,60以下者各有多少人?并把结果连续存放到自RESUT开始地单元中,(要求画出程序流程图,各段定义完整)答:程序如下:DATA SEGMENTBUF DB 40H,64H,51H,…RESUT DB 3 DUP(0)DATA ENDSCODE SEGMENTASSUME DS∶DATA,ES∶DATA,CS∶CODE MAIN PROC FARPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,BUFMOV CX,100CLDAO:LODSBCMP AL,5AHJL L60INC [RESUT]JMP COML60: CMP AL,3CHJGE K8960INC [RESUT+1]JMP COMK8960: INC [RESUT+2]COM: LOOP AORETMAIN ENDPCODE ENDSEND4.设在内存单元SQTAB首址开始存放了0~10地平方数表.要求用直接查表法编一程序,求出A单元中给定数(<=10 )地平方值送B单元保存.答:程序如下:DATA SEGMENTSQTAB DB 0,1,4,9,16,25,36,49,64,81DB 100A DB 12B DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC FARSTART:PUSH DXXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET SQTABMOV AL,AXLATMOV B,ALRETMAIN ENDPCODE ENDSEND START5.A1单元开始定义了一长度为N地字符串,找出其中所有地小写字母并存放到以A2单元开始地存储区中.统计出小写字母地个数,存放到SL单元中.请编一完整地源程序.数据段如下:DATA SEGMENTA1 DB ‘……’N EQU $ -A1A2 DB N DUP(?)SL DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA MAIN PROC FARSTART: PUSH DXXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET A1MOV AL,0MOV CX,NNEXT:MOV DL,[BX] CMP DL,‘a’JB KCMP DL,‘z’JA KINC ALK:INC BXLOOP NEXT MOV SL,ALRETMAIN ENDPCODE ENDSEND START版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.用户可将本文地内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权利.除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人地书面许可,并支付报酬.Users may use the contents or services of this article for personal study, research or appreciation, and other non-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任.Reproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1、请任意输入一个字符串,将该串倒序后在屏幕上显示。
(2)2、请任意输入一个字符串,统计其中空格和A 的个数,并将结果显示在屏幕上。
(3)3、请任意输入一个字符串,将其中的空格全部删除,并将结果显示在屏幕上。
(5)4、请任意输入一个字符串,将其中A换成CC,并将结果显示在屏幕上。
(6)5、请任意输入一个字符串,将其中大写字母换成小写字母,并将结果显示在屏幕上。
86、请任意输入一个字符串,将其中的英文字母全部删除,并将结果显示在屏幕上。
107、现有一组字符串为data,name,time,file,code,path,user,exit,quit,text ,请编写程序从键盘输入4个字符的字符串,若存在将其修改为disk, 并将结果在显示器上显示。
(11)8、现有一组字符串为ram,yes,red,the,get,for,and,key,not,may ,请编写程序将他们按ASCII 大小排序,并在显示器上显示。
(14)9、现有一组字符串为data,name,time,file,code,path,user,exit,quit,text ,请编写程序从键盘输入4个字符的字符串,若存在将其删除, 并在显示器上显示。
(16)10、现有一组字符串为data,name,time,file,code,path,user,exit,quit,text ,请编写程序将上述字符串排序(升序)并插入disk 使其人仍然有序, 并在显示器上显示。
(18)11、............................. 键盘输入一个十进制数(字类型),以十六进制的形式输出。
2212、............................... 键盘输入一个十进制数(字类型),以二进制的形式输出。
2413、............................. 键盘输入一个二进制数(字类型),以十六进制的形式输出。
2514、............................... 键盘输入一个二进制数(字类型),以十进制的形式输出。
2715、............................. 键盘输入一个十六进制数(字类型),以十进制的形式输出。
2916、............................. 键盘输入一个十六进制数(字类型),以二进制的形式输出。
3117、将一组有符号数中的负数求和,并统计负数的个数,并在屏幕上以十进制的形式显示结果。
(33)18、键盘输入十个数,分别统计0 到9,10 到99,100 以上的数的个数,并显示结果。
.3519、键盘输入两组数743216、527864 ,按BCD 码求和,并将结果显示在屏幕上。
3620、键盘输入下列两组十进制数,求其和,并将结果显示在屏幕上3821、键盘输入一串二进制数1ah ,7ch,0bah,3ah,45h,63h 求其和,并将结果显示在屏幕上。
(40)22、从键盘输入一串可显示字符(以回车符结束),并按字母、数字、空格分类计数,然后显示出这三类统计的结果。
(42)23、编写程序,将十个字的有符号数中最大、最小值求出,并在显示器上输出。
45 24、................................................................................. 键盘输入10 个字节数(无符号数),求出最大、最小值,并在显示器上输出。
. (48)25、一个有符号字数组以0 为结束标志,编程求这个数组的最大值、最小值、平均值。
5126、在BUFFER 中定义了的十个带符号字,将其中的负数变成绝对值,并以十进制方式输出。
(56)27、已知数组A 包含20 个互不相等的字型整数,数组B 包含30 个互不相等的字型整数,试编制一程序把在A中而不在B中出现的整数放于数组C中。
(58)28、已知数组A 包含20 个互不相等的字型整数,数组B 包含30 个互不相等的字型整数,试编制一程序把既在A中又在B中出现的数存放于数组C中。
(63)29、设有4 个学生参加5 门考试,请计算每个学生的平均成绩和每门课的平均分成绩,并在显示器上显示,输出格式如下: (67)Chg1 chg2 chg3 chg4 chg5 meam (67)S1 78 85 55 100 97 (67)S2 67 96 43 79 84 (67)S3 92 55 76 92 65 (67)S4 43 95 82 89 75 (67)Aver (67)不计小数。
(67)30、编程计算从2开始的N(N<50)个偶数之和(2 + 4 + 6+…),主程序从键盘输入整数N , 调用子程序求出N 个偶数之和,由主程序显示结果。
尝试分别使用以下 3 种方法编写完整程序。
70( 1 )利用寄存器传递参数 (70)(2)利用公共数据段变量传递参数 (70)(3)利用堆栈传递参数 (70)31、...................................................................... 多模块程序设计72(1)设计一个包括:键盘输入、显示、排序、转换、退出程序的主菜单。
(2)从键盘输入10 个字型带符号数。
(3)把10 个带符号十进制数转换成二进制数。
(4)把10个二进制数按从小到大顺序排列。
(5)把10 个带符号二进制数转换成十进制数。
(6)把最大数用十进制数的形式显示在屏幕上要求:(1)整个程序用四个模块组成:主菜单,排序子模块,转换子模块,其它。
(2)键盘输入与显示功能分别用宏指令实现。
(3)排序及转换功能分别用子程序实现。
(72)32、.................................................. 将两个磁盘文件合并成一个新的文件。
7233、将一磁盘文件‘ 1.TXT '读入内存2000:0000h 中,并将文件以反序形式(头尾对应字符互换)仍以相同路径存入磁盘中。
(74)34、在多模块设计中,主模块中调用内部模块BUF1,BUF2,BUF3,BUF4 。
主模块根据键盘输入的指令(如:A,B,C,D )调用上述对应的子程序,每个子程序的任务是显示其入口地址。
调用后继续等待调用,若输入ESC键(ASCII码为1BH )则结束程序的执行。
请编写完成该任务的程序。
(76)35、现有一控制程序共5 个工序,要求输入0-4 的序号,分别执行各工序的子程序,每个子程序的任务是显示其入口地址。
调用后继续等待调用,按回车则结束程序的执行。
(78)36、从键盘输入一个两位十进制数的月份,然后显示出相应的英文名,要求显示月份的功能用子程序实现。
80 37、现有一组参量按16位编码,各字段的长度如下:BIT1=6 ,BIT2=4 ,BIT3=3 ,BIT4=3 ,BIT1 位于高位,BIT4 位于低位。
设BIT1=52 ,BIT2=13 ,BIT3=5,BIT4=3 请用程序编码将这些字段编码组合成一个字,按二进制的形式在屏幕上输出。
................... 8 31、请任意输入一个字符串,将该串倒序后在屏幕上显示DATAS SEGMENTBUF DB 30DB ?DB 30 DUP(?)BUF1 DB 0DH,0AH,30 DUP(?) DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA DX,BUFMOV AH,0AHINT 21HLEA SI,BUF+2LEA DI,BUF1ADD DI,2MOV BL,BUF+1XOR BH,BHADD SI,BXMOV CL,BUF+1AGAIN:DEC SIMOV AL,[SI]MOV [DI],ALINC DILOOP AGAINMOV BYTE PTR[DI],'$'LEA DX,BUF1MOV AH,09HINT 21HMOV AH,4CHINT 21HCODES ENDSEND START2、请任意输入一个字符串,统计其中空格和 A 的个数,并将结果显示在屏幕上。
DATA SEGMENTBUF DB 0FFHDB ?DB 0FFH DUP (?)STROUT DB 0DH,0AH,'A =000'DB 0DH,0AH,'SPACE=000','$' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AH,0AHINT 21HLEA SI,BUF[2]MOV CL,BUF[1]XOR CH,CHAGAIN:CMP BYTE PTR[SI],'A'JNE NOTACMP STROUT[10],'9'JE ATENINC STROUT[10]JMP NEXTATEN:CMP STROUT[9],'9'JE AHUNMOV STROUT[10],'0'INC STROUT[9]JMP NEXTAHUN:MOV STROUT[10],'0'MOV STROUT[9],'0'INC STROUT[8]JMP NEXTNOTA:CMP BYTE PTR[SI],' 'JNE NOTSPACECMP STROUT[21],'9'JE SPACETENINC STROUT[21]JMP NEXTSPACETEN:CMP STROUT[20],'9'JE SPACEHUNMOV STROUT[21],'0'INC STROUT[20]JMP NEXTSPACEHUN:MOV STROUT[21],'0'MOV STROUT[20],'0'INC STROUT[19] NOTSPACE:NEXT:INC SILOOP AGAINLEA DX,STROUTMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START3、请任意输入一个字符串,将其中的空格全部删除,并将结果显示在屏幕上DATAS SEGMENTBUF DB 50DB ?DB 50 DUP(?)POSITION DB 1NEWLINE DB 0AH,0DH,'$'DATAS ENDSSTACKS SEGMENTSAVE DW 100 DUP(?)STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA DX,BUFMOV AH,0AHINT 21HLEA SI,BUF+2MOV CL,BUF+1XOR CH,CHNEXT:MOV AL,[SI]CMP AL,' 'JE DELATEINC POSITIONINC SIDEC CXCMP CX,0JNE NEXTJMP OUTPUTDELATE:PUSH SIPUSH CXPUSH AXMOV AX,SIINC AXMOV DI,AXMOV AL,POSITIONMOV CL,BUF+1SUB CL,ALXOR CH,CHAGAIN:MOV AL,[DI]MOV [SI],ALINC SIINC DILOOP AGAINPOP AXPOP CXPOP SIDEC CXJMP NEXTOUTPUT:MOV AL,'$'MOV [SI],ALLEA DX,NEWLINEMOV AH,09HINT 21HLEA DX,BUF+2MOV AH,09HINT 21HMOV AH,4CHINT 21HCODES ENDSEND START4、请任意输入一个字符串,将其中A换成CC,并将结果显示在屏幕上DATAS SEGMENTBUF DB 50DB ?DB 50 DUP(?)DATAS ENDSSTACKS SEGMENTSAVE DB 100 DUP(?)STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV AX,STACKSMOV SS,AXLEA DX,BUFMOV AH,0AHINT 21HLEA SI,BUF+2XOR CH,CH NEXT:MOV AL,[SI]CMP AL,'A'JE MOVEINC SIDEC CXCMP CX,0JNE NEXTJMP OUTPUT MOVE:PUSH SIPUSH CXMOV BX,SILEA SI,BUF+2MOV AL,BUF+1XOR AH,AHADD SI,AXMOV AX,SIINC AXMOV DI,AXDEC AXSUB AX,BXMOV CX,AX AGAIN:MOV AL,[SI]MOV [DI],ALDEC SIDEC DILOOP AGAINPOP CXPOP SIJMP TIHUAN TIHUAN:MOV AL,'C'MOV [SI],ALMOV [SI+1],ALINC BUF+1INC SIINC SIDEC CXCMP CX,0JNE NEXTJMP OUTPUT OUTPUT:MOV AL,'$'MOV [SI],ALMOV DL,0AHMOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HMOV AH,09HINT 21HMOV AH,4CHINT 21HCODES ENDSEND START5、请任意输入一个字符串,将其中大写字母换成小写字母,并将结果显示在屏DATAS SEGMENTBUF DB 30 DB ?DB 30 DUP(?)DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA DX,BUFMOV AH,0AHINT 21HLEA SI,BUF+2MOV CL,BUF+1NEXT:MOV AL,[SI]CMP AL,'A'JB CONTINUECMP AL,'Z'JBE TIHUANJMP CONTINUETIHUAN:ADD AL,20HMOV [SI],ALCONTINUE:INC SIDEC CXCMP CX,0JZ OUTPUTJMP NEXTOUTPUT:MOV AL,'$'MOV [SI],ALMOV DL,0AHMOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HLEA DX,BUF+2MOV AH,09HINT 21HMOV AH,4CHINT 21HCODES ENDSEND START6、请任意输入一个字符串,将其中的英文字母全部删除,并将结果显示在屏幕上。