编程练习汇编

合集下载

汇编语言程序设计练习题及参考答案

汇编语言程序设计练习题及参考答案

一、单项选择题从每小题的四个备选答案中,选出一个正确答案,并将正确答案的番号填人括号内。

1.用来存放下一条将要执行的指令地址的寄存器是(B)A.SP B.IP C.BP D.CS2.要使串处理从低地址向高地址进行,应把标志位置为(D)A.IF=1B.TF=0C.DF=1D.DF=03.使状态标志位CF清零的错误指令是(C)A.OR AX,AX B.SUB AX,AXC.MOV CF,0D.CLC4.设SP=1110H,执行PUSH AX指令后,SP的内容为(B)A.SP=1112H B.SP=110EHC.SP=1111H D.SP=110FH5.汇编源程序出现语法错误的指令有(D)A.MOV[BX+SI],AL B.MOV AX,[BP+DI]C.MOV DS,AX D.MOV CS,AX6.下列串操作指令中,必须同时指明源串和目的串地址的指令是(D)A.STOSW B.LODSWC.SCASW D.CMPSW7.设BL中有一无符号数,实现把BL中的数乘以2,应选用的指令是(B)A.SHR BL,1B.SHL BL,1C.SAR BL,1D.RCR BL,18.执行PUSH AX指令的正确步骤是(A)A.1.SP←SP-1,(SP)←AH B.1.(SP)←AH,SP←SP-12.SP←SP-1,(SP)←AL2.(SP)←AL,SP←SP-1C.1.SP←SP+1,(SP)←AH D.1.(SP)←AH,SP←SP+12.SP←SP+1,(SP)←AL2.(SP)←AL,SP←SP+19.CF=1时转移到目标地址的条件转移指令是(B)A.JNC B.JC C.JZ D.JS10.在执行NEG指令时,对标志位CF有影响,其影响的规则是(C)A.对正数求补时,CF=0B.对负数求补时,CF=0C.对非零数求补时,CF=1D.对零求补时,CF=111.算术右移SAR和逻辑右移SHR两条指令执行后结果完全相同的情况是(A)A.目的操作数最高位为0B.目的操作数最高位为1C.目的操作数为任意情况D.无论什么情况都不可能相同12.设AL=04H,BL=0F8H,执行IMUL BL指令后,结果是(D)A.AX=0032H B.AX=00E0HC.AX=03E0H D.AX=0FFE0H13.指令的操作数中,允许出现表达式,例如BUF1与BUF2均为变量名,下面指令中语法正确的是(D)A.MOV AX,BUFl*BUF2B.MOV AX,BUF1/BUF2C.MOV AX,BUF1+ES:BUF2D.MOV AX,BUF2-BUF114.下面指令中,操作数的寻址方式为寄存器间接寻址的指令是(C )A.INC WORD PTR [BX+SI]B.INC CX,[SI+COUNT]C.NEG BYTE PTR [BX]D.ADD AX,B15.NUM EQU 80HDA DB 34HAND DA,NUM上述语句执行后,DA 中的内容是(D )A.0B4H B.80H C.34H D.016.直接、间接、立即三种寻址方式指令的执行速度,由快至慢的排序为(A )A.立即、直接、间接B.直接、间接、立即C.直接、立即、间接D.不一定17.语句DA1DB 2DUP(3,5,7)汇编后,该语句可等同于的语句是(D )A.DA1DB 3,5,7B.DA1DB 2,3,5,7C.DA1DB 3,5,7,2D.DA1DB 3,5,7,3,5,718.MOV AL,80HMOV CL,2SAR AL,CL上述指令序列执行后,结果是(D )A.AL=40H B.AL=20HC.AL=0C0H D.AL=0E0H19.下面是实现将AL 内容加1的压缩型BCD 码加法程序段,其中正确的指令序列是(A )A.INC AL B.ADD AL,1DAA DASC.ADD AL,1D.STCDAA AAA20.现有数据存储如图所示:30100H 30101H 30102H 30103H 设AL=01H,BX=0100H,DS=3000H 执行换码指令XLAT 后正确的结果是(B )A.AL=20H B.AL=38HC.AL=00H D.AL=41H21.若定义DAT DW 'A',则(DAT)和(DAT+1)两个相邻的内存中存放的数据是(B )A.0041H B.4100H 20H38H41H55HC.xx41H D.41xxH[注]选项C.和D.中的XX表示任意数据。

汇编语言编程练习

汇编语言编程练习

汇编语言编程练习1.数值运算编程(a)实验目的通过编程及程序调式,熟悉8086/8088运算指令及DEBUG动态调试程序的方法(b)实验内容●无符号二进制数运算已知有20个8位的无符号二进制数,编一个程序完成对这些数的求和程序:STACK SEGMENT STACK'STACK';STACK SEGMENTDW128DUP(?);128WORDSSTACK ENDS;SEGMENT ENDDATA SEGMENT PARA'DATA';DATA SEGMENTTABLE DB01,02,02,04,04,06,07,08,08,10,10,10,14,15,16,17,18,19,20TOTAL DW?;BCD加法运算结果PRINT DB?;显示的ASCII字符DATA ENDS;SEGMENT ENDCODE SEGMENT PARA'CODE'ASSUME CS:CODE,DS:DATA,SS:STACKMAIN PROC FARPUSH DSXOR AX,AXMOV AX,DATAMOV DS,AXMOV AX,0MOV BX,OFFSET TABLEMOV CX,20SUM:ADD AL,[BX]JNC OVERINC AHCLCOVER:INC BXLOOP SUMMOV TOTAL,AXMOV CX,0010LEA SI,PRINT+3L20:CMP AX,CX;值<10?JB L30;是,退出XOR DX,DX;清除高位商DIV CX;除以10OR DL,30HMOV[SI],DL;存ASCII字符DEC SIJMP L20L30:OR AL,30H;存最后的商MOV[SI],AL;作为ASCII字符MOV AH,02H;打印算术结果MOV CX,4LEA DI,PRINTL10:MOV DL,[DI]INT21HINC DILOOP L10MOV AX,4C00HINT21HMAIN ENDPCODE ENDSEND MAIN说明:8位无符号数相加,用AX做存储器,在低位AL上进行累加,在高位AH上进行和0的进位加法运行结果:●BCD算术运算已知两个6位的BCD码,完成减法运算,设被减数为123456,减数为789123程序:STACK SEGMENT STACKDW128DUP(?)STACK ENDSDATA SEGMENT PARA'DATA'NUMBER1DB'789123'NUMBER2DB'123456'SF DB'-';需打印的符号RESULT DB?;存算术结果DATA ENDSCODE SEGMENT PARA'CODE'ASSUME CS:CODE,DS:DATA,SS:STACKMAIN PROC FARPUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXLEA SI,NUMBER1+5LEA DI,NUMBER2+5LEA BX,RESULT+5MOV CX,6CLCMOV AL,[SI];将低位放在AL中L10:MOV AH,[SI-1];将高位放在AH中SBB AL,[DI]AAS;做ASCII减法调整OR AX,3030HMOV[BX],AL;存单位运算结果MOV AL,AH;将下一位放入ALDEC SIDEC DIDEC BXLOOP L10MOV AH,02H;打印算术结果MOV CX,7LEA DI,SFL20:MOV DL,[DI]INT21HINC DILOOP L20MOV AX,4C00HINT21HMAIN ENDPCODE ENDSEND MAIN运行结果:2.非数值运算编程(a)实验目的通过非数值运算(如统计,分类,排序,代码转换等)编程,进一步掌握8086/8088汇编语言程序设计方法和技巧(b)实验内容●统计和分类ii.100H个8位无符号数,按0~1FH,20H~3FH,…,0EFH~0FFH分成10组,试统计每组内数据个数程序:STACK SEGMENT STACKDW64DUP(0)STACK ENDSDATA SEGMENTIARRAY DB100DUP(0)OARRAY DB100DUP(0)F1DW0F2DW0F3DW0F4DW0F5DW0F6DW0F7DW0F8DW0DISPLAY DB100DUP(0)TEN DW10LCONT DW0MESSAGE DB'0~1FH20H~3FH40~5FH60~7FH80~9FH0EH~0BFH0C0H~0DFH0EFH~0FFH:','$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXLEA BX,IARRAYLEA DI,OARRAYXOR CX,CXJMP J2J1:MOV DL,ALMOV AH,2INT21HCALL CONVERTJ2:MOV AH,7INT21HCMP AL,0DHJE NEXT1CMP AL,','JE J1CMP AL,''JE J1CMP AL,'0'JL J2CMP AL,'9'JG J2CALL INPUTJMP J2NEXT1:CALL CONVERTLEA BX,OARRAYMOV CX,[LCONT]C0:MOV DL,[BX]CMP DL,0JB NEXT2CMP DL,1FHJB C1CMP DL,3FHJB C2CMP DL,5FHJB C3CMP DL,7FHJB C4CMP DL,9FHJB C5CMP DL,0BFHJB C6CMP DL,0DFHJB C7JA C8C1:MOV AX,[F1]INC AXMOV[F1],AXJMP NEXT2C2:MOV AX,[F2]INC AXMOV[F2],AXJMP NEXT2C3:MOV AX,[F3]INC AXMOV[F3],AXJMP NEXT2C4:MOV AX,[F4]INC AXMOV[F4],AXJMP NEXT2C5:MOV AX,[F5]INC AXMOV[F5],AXJMP NEXT2C6:MOV AX,[F6]INC AXMOV[F6],AXJMP NEXT2C7:MOV AX,[F7]INC AXMOV[F7],AXJMP NEXT2C8:MOV AX,[F8]INC AXMOV[F8],AX NEXT2:INC BXDEC CXJNZ C0MOV DL,0AHMOV AH,2INT21HLEA DX,MESSAGEMOV AH,09HINT21HMOV CX,8LEA BX,F1S0:CALL SHOWCMP CX,1JE NEXT3MOV DL,','MOV AH,2INT21HADD BX,2NEXT3:DEC CXJNZ S0RETMAIN ENDPINPUT PROC NEARMOV[BX],ALINC BXINC CXMOV AH,2MOV DL,ALINT21HOUT1:RETINPUT ENDPCONVERT PROC NEARSUB BX,CXDEC CXXOR AX,AXMOV AX,[BX]SUB AX,30HCMP CX,0JE OUT2LOOP1:MUL TENINC BXADD AX,[BX]SUB AX,30HLOOP LOOP1 OUT2:MOV[DI],ALINC DIMOV AX,[LCONT]INC AXMOV[LCONT],AXRETCONVERT ENDPSHOW PROC NEARLEA DI,DISPLAYMOV CH,0MOV AX,[BX]S1:XOR DX,DXDIV TENMOV[DI],DLINC DIINC CHCMP AX,0JNZ S1S2:DEC DIMOV DL,[DI]ADD DL,30HMOV AH,2INT21HDEC CHJNZ S2RETSHOW ENDPCODE ENDSEND MAIN程序说明由于100H个无符号数进行排序,数据个数比较多,因此运行时输入10个。

汇编语言编程编程练习.doc

汇编语言编程编程练习.doc

汇编语言编程编程练习一、实验题1.非数值运算编程(a)实验目的通过非数值运算(如统计,分类,排序,代码转换等)编程,进一步掌握8086/8088 汇编语言程序设计方法和技巧(b)实验内容·统计设有100H个数,编程统计正数、负数和零的个数。

实验分析:程序中数的总数很多,某些部分需要重复执行,因此要用到循环结构。

循环结构每次测试循环条件,当满足条件时,重复执行这一段程序;否则循环结束,顺序往下执行。

其次,要统计正数、负数、零的个数,可以依靠标志位SF进行判断,SF=0,正数;SF=1,负数;零则为总数减去正负数的个数。

该程序流程图如下:开始初始化:设置缓冲区BUFF指针BX,设定循环次数256,统计计数器DL清零执行:从BUFF取数,进行算术运算,判断符号标志位SF修改:移动缓冲区指针,循环次数减一NO循环控制:CX=0YES结束:将寄存器的统计结果存入MEM单元,将控制交操作系统程序如下所示:STACK SEGMENT STACKDW 128 DUP(?)STACK ENDSDA TA SEGMENTBUFF DB 256 DUP(?)MEM1 DB ?MEM2 DB ?MEM3 DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAMOV DS,AXMOV CX,256LEA BX, BUFFXOR DL,DLXOR DH,DHXOR SI,SI ;统计计数器清0NEXT:MOV AL,[BX];取数据到ALADD AL,0 ;做运算,影响标志位SFJNS AA1 ;是正数,跳到AA1INC DL ;是负数,统计加1AA1: INC DH ;是正数,加1INC BX ;移动指针LOOP NEXT ;循环控制MOV MEM1,DLMOV MEM2,DHMOV MEM3,SI ;保存统计结果MOV AX,4C00HINT 21HCODE ENDSEND START·代码转换编程将组合的BCD码9649转换成二进制数,考虑采用(((A*10)+B)*10)+C)*10+D 的算法。

汇编语言练习

汇编语言练习

1、8086/8088的存贮器组织是将存储器划分为段,可作为段的起始地址是()。

A.00010HB.AB076HC.010C3HD.12345H2、下列指令执行后,能影响标志位的指令是()。

A.PUSHFB.JNLE NEXTC.POPFD.LOOPZ LOP3、某存储单元的段地址是0AB50H,偏移地址是1234H,该存储单元的物理地址是()。

A.0BDC4HB.0AC734HC.0AD134HD.1CED0H4、AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是()。

A.指令XOR AX,AX执行后,AX内容不变,但影响了标志位。

B.指令OR DX,1000H执行后,将DX最高位置1,其余各位置0。

C.指令AND AL,OFH执行后,AL高四位清零,低四位内容不变。

D.指令NOT AX执行后,AX内容清零。

5、设DF=0,每次执行CMPSW指令时,SI和DI均要分别()。

A.减1B.减2C.加1D.加26、设(AL)=03H,要使(AL)=-03H应执行的指令是()。

A.OR AL,80HB.NOT ALC.NEG ALD.ADD AL,80H7、汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法()。

A.名字的第一个字符可以是大写英文字母及小写英文字母B.名字的第一个字符可以是字母、数字及、@、_C.名字的有效长度≤31个字符D.在名字中不允许出现$8、比较两个带符号的数A、B,当A≠B时程序转移,测试的条件为()。

A.ZF=1B.ZF=0C.SF=1D.SF=09、下面各传送指令中,正确的是()。

A.MOV [DI],[SI]B.MOV[DX+DI],ALC.MOV WORD PTR [BX],0100HD.MOV AL,BX10、用于显示字符串的DOS系统功能调用,应设置AH寄存器的内容为()。

A.1HB.2HC.9HD.0AH11、DA1 DW‘AB’,‘CD’,‘EF’,‘GH’┇MOV AX,DA1+3指令执行后AX中的内容是()。

语言编程题经典40题附解答

语言编程题经典40题附解答
scanf(“%d”, &x ); /*读入要插入的元素x */ i=n-1; /*从表尾往表头方向搜索插入位置*/ while (( i >=0) && ( x <a[i])) {a[i+1]=a[i]; i--;} /*元素后移*/ a[i+1]=x; /*插入元素x*/
output( a, n);/*输出插入后的序列*/ }
输出左下三角的九九口诀表的程序如下:
void main( ) { int i, j; for( i=1; i<=9; i++) { for( j=1; j<=i; j++) printf(“%4d* %d= %2d”, i, j, i*j); printf(“\n”); } }
1
2
8、铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤0.15元计费;如超过50公斤,超过部分每公斤加收0.10元。编一程序实现自动计费功能。
11、将一个数插入到有序的数列中去,要求插入后,仍然保持数列的有序性。李丽娟教材p156题7.38
1、方法与步骤
(1)读入n个数到数组a[N]中(要求N>n)。 (2)对a[n]按递增序进行排序。 (3)输出插入前的有序序列。 (4)读入要插入的数x。 (5)设置游标i从表尾开始搜索插入位置,若a[i]大于x则将a[i]移到a[i+1]位置。 (6)一旦出现a[i]小于x,则将x插入到i+1位置。 (7)输出插入后的有序序列。
2 、编写程序,输入两个整数,求它们相除的余数。用带参的宏来实现。
# define R(A , B) A%B
main( ) { int a , b ; printf( “input a and b:”) ; scanf (“%d,%d” , &a , &b ) ; printf( “%d mod %d = %d\n” , a , b , R( a , b ) ) ; }

(汇编语言)练习题

(汇编语言)练习题

(汇编语言)练习题【一】填空题〔每题0.5分,共10分〕1、26.25D= B= O= H2、-56D的原码为 B,反码为 B,补码为 B。

3、0C51H的反码为 B,补码为 B。

4、十进制数87的压缩BCD码为 B,非压缩BCD码为 B。

6、设〔BX〕=1000H,〔DI〕=0010H,〔DS〕=2100H,在指令MOV AX,[BX+DI]中,源操作7、设BUF为数据段0234H单元的符号名,其中存放的内容为3456H。

写出以下指令单独执行后的结果。

〔1〕MOVAX,BUF〔AX〕=〔2〕LEAAX,BUF〔AX〕=8、子程序的参数传递方法包括、、。

9、实模式下存储器的20位物理地址由加形成。

【二】选择题〔每题1分,共10分〕1、以下通用数据传送指令的几种传送中,错误的传送方式是()。

A、从累加器到存储器B、马上数到存储器C、从寄存器到存储器D、从存储器到存储器2、使进位位置1的指令是()。

A、CLCB、CMCC、STCD、NOP3、设AL,BL中基本上有符号数,当AL<=BL时转至NEXT处,在CMPAL,BL指令后,应选用正确的条件转移指令是()。

A、JBEB、JNGC、JNAD、JNLE4、指令LOOPZ的循环执行条件是()。

A、CX<>0同时ZF=0B、CX<>0或ZF=0C、CX<>0同时ZF=1D、CX<>0或ZF=15、以下合法的变量名称是〔〕。

A、9BUFB、ADDC、BUF9D、ASSUME6、一条指令中目的操作数不同意使用的寻址方式是()。

A、寄存器寻址B、马上数寻址C、变址寻址D、寄存器间接寻址7、DOS的功能调用号必须送〔〕寄存器。

A、DLB、DHC、ALD、AH8、在实模式下,存储器治理采纳分段模式,每段大小可达〔〕。

A、64MB、1MC、64KD、16字节9、用来存放下一条将要执行的指令地址的寄存器是()。

A、SPB、IPC、BPD、CS10、要使串操作从低地址向高地址进行,应把标志位设置为()。

汇编程序题(仅供参考)

汇编程序题(仅供参考)

2.用单个字符显示的2号功能调用显示STRING中的字符串‘COMPUTER’DA TA SEGMENTBUF DB 'COMPUTER'LEN DB $-BUFDA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CL,LENLEA SI,BUFL:MOV DL,[SI]MOV AH,02HINT 21HINC SILOOP LMOV AH,4CHINT 21HCODE ENDSEND START3.试编写程序将字符串STR中的第一个“A”用“B”代替。

DA TA SEGMENTSTR DB 'SDASDFAE'CUNT EQU $-STRDA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX, DA TAMOV DS, AXMOV DI,OFFSET STRMOV AL,'A'MOV CX,CUNTAGN: CMP AL,[DI]JZ FININC DILOOP AGNFIN: MOV BYTE PTR[DI],'B'MOV AH,9HLEA DX,STRINT 21HMOV AH,4CHINT 21HCODE ENDSEND START4.用串操作指令实现以BUF为首址的连续30个字节单元中存放相同字符DA TA SEGMENTBUF DB 30 DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX, DATAMOV DS, AXMOV AL,'A'MOV DI,OFFSET BUFMOV CX,30CLDAGN: STOSBDEC CXJNZ AGNMOV AH,4CHINT 21HCODE ENDSEND START5.编写完整的程序,把从键盘输入的一个小写字母转换成相应的大写字母,并显示。

《汇编语言程序设计》考试练习题及答案

《汇编语言程序设计》考试练习题及答案

《汇编语言程序设计》考试练习题及答案一、单选题1. 计算机中存取信息或数据的最小单位为()A 、位B 、字节C 、字D 、双字答案:B2. 调用子程序的指令为()A 、CALLB 、RETC 、HLTD 、NOP答案:A3. DOS功能调用是通过()指令去调用DOS系统提供的软件中断处理程序A 、INT 21HB 、INT 23HC 、INT 12HD 、INT 11H答案:A4. 满足()时,CPU允许中断A 、IF=0B 、IF=1C 、DF=0D 、DF=1答案:B5. 完成对CL寄存器的内容乘以4的正确操作是()。

A 、ROL CL,1 ROL CL, 1B 、MUL 4C 、SHL CL, 1 SHL CL, 1D 、MOV CL , 2 SHL CL, CL答案:C6. 下面寄存器中可以分为两个独立8位寄存器的是()A 、AXB 、DIC 、CSD 、SI答案:A7. ()是用二进制编码的机器指令的集合及一组使用机器指令的规则,是CPU能直接识别的唯一语言。

A 、汇编语言B 、机器语言C 、JAVA语言D 、C语言答案:B8. 源程序模块结束语句为()A 、ORGB 、ENDC 、SEGMENTD 、START答案:B9. 8位补码表示的有符号数的表示范围是()A 、0~255B 、-128~+127C 、0~65535D 、-32768~+32767答案:B10. 在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来,下列说法正确的是()A 、占内存空间小,但速度慢B 、占内存空间大,但速度快C 、占内存空间相同,但速度快D 、占内存空间相同,但速度慢答案:B11. 与LEABX ,BUF指令完全等效的指令是()。

A 、MOV BX ,BUFB 、LDS BX ,BUFC 、MOV BX ,OFFSET BUFD 、MOV BX ,WORD PTR BUF答案:C12. 14的非压缩BCD码为()A 、00010100B 、01000001C 、0000000000010100D 、0000000100000100答案:D13. 要实现使BETA的值为56,应采用的语句是()A 、BETA DB 56B 、BETA DB 56HC 、BETA EQU 56HD 、BETA EQU 56答案:D14. ()不可以做目的操作数A 、立即数B 、寄存器C 、存储器操作数D 、累加器答案:A15. 计算机一般由中央处理器、存储器和输入/输出子系统组成,其中()可以存放程序、数据、信息及中间结果。

汇编语言编程编程练习.doc

汇编语言编程编程练习.doc

汇编语言编程编程练习一、实验题1.非数值运算编程(a)实验目的通过非数值运算(如统计,分类,排序,代码转换等)编程,进一步掌握8086/8088 汇编语言程序设计方法和技巧(b)实验内容·统计设有100H个数,编程统计正数、负数和零的个数。

实验分析:程序中数的总数很多,某些部分需要重复执行,因此要用到循环结构。

循环结构每次测试循环条件,当满足条件时,重复执行这一段程序;否则循环结束,顺序往下执行。

其次,要统计正数、负数、零的个数,可以依靠标志位SF进行判断,SF=0,正数;SF=1,负数;零则为总数减去正负数的个数。

该程序流程图如下:开始初始化:设置缓冲区BUFF指针BX,设定循环次数256,统计计数器DL清零执行:从BUFF取数,进行算术运算,判断符号标志位SF修改:移动缓冲区指针,循环次数减一NO循环控制:CX=0YES结束:将寄存器的统计结果存入MEM单元,将控制交操作系统程序如下所示:STACK SEGMENT STACKDW 128 DUP(?)STACK ENDSDA TA SEGMENTBUFF DB 256 DUP(?)MEM1 DB ?MEM2 DB ?MEM3 DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAMOV DS,AXMOV CX,256LEA BX, BUFFXOR DL,DLXOR DH,DHXOR SI,SI ;统计计数器清0NEXT:MOV AL,[BX];取数据到ALADD AL,0 ;做运算,影响标志位SFJNS AA1 ;是正数,跳到AA1INC DL ;是负数,统计加1AA1: INC DH ;是正数,加1INC BX ;移动指针LOOP NEXT ;循环控制MOV MEM1,DLMOV MEM2,DHMOV MEM3,SI ;保存统计结果MOV AX,4C00HINT 21HCODE ENDSEND START·代码转换编程将组合的BCD码9649转换成二进制数,考虑采用(((A*10)+B)*10)+C)*10+D 的算法。

汇编模拟题-----编程题

汇编模拟题-----编程题

1、设在数据段中有X,Y两变量(字节单元),试编写程序段计算(只写有关程序功能的指令):Y= X 当X >=0Y= 0 当X<0解:mov al,xcmp a;,0jge A1mov al,0A1:mov y,al2在STR单元开始定义了一长度为LEN字节的字符串,统计出其中大写字母的个数并存放到LARGE字节单元中。

请编一完整的源程序。

DATA SEGMENTSTR DB‘… …’LEN EQU $-STRLARGE DB ?DATA ENDSCD EGMENTASSUME CS:CD,DSATALARG PROC FARMOV AX,DATAMOV DS,AXLEA SI,STRMOV CX,LENMOV BL,0NT:CMP BYTE PTR [SI],‘A’JB NOLARGCMP BYTE PTR [SI],‘Z’JA NOLARGINC BLNOLARG:INC SILOOP NTMOV LARGE,BLMOV AH,4CHINT 21HLARG ENDPCD ENDSEND LARG3、已知DAT1字节单元有一个数据,试编制一程序段将该数据的低4位变为1010B,最高位(第7位)置1,其余3位不变,结果送DAT2字节单元。

MOV AL,DATA1AND AL,70HADD AL,8AHMOV DATA2,AL4、在N1和N2两数据区中,分别有10H个带符号数。

试编制一源程序,找出对应项中较小的数据,并将这些较小的数据存入N3数据区中(要求:对应项比较时必须用CMPS指令)。

DATA SEGMENTN1 DB ××,××,××,……N2 DB ××,××,××,……N3 DB 10H DUP(0)DATA ENDS解:STACKSEG SEGMENT STACKDB 1024 DUP(0)STACKSEG ENDSDATA SEGMENTN1 DB 5Ah,6Fh,2Eh,0D8h,0E3h,9Ch,0DBh,0B7h,5Bh,21h,35h,8Eh,4Ah,15h,58h,75hN2 DB 58h,0FFh,5Eh,38h,0C7h,0A1h,26h,86h,48h,35h,48h,16h,0BAh,0FAh,0DFh,0E9hN3 DB 10H DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSEGSTART: MOV AX,DATAMOV DS,AXINC AXMOV ES,AXMOV SI,0FFFFHMOV DI,0FFFFHMOV CX,10hMOV BX,OFFSET N3CLDAGAIN: CMPS BYTE PTR N1,BYTE PTR N2JL N1LESMOV AL,[SI+10h]MOV [BX][SI],ALJMP CMPAGAINN1LES: MOV AL,[sI]MOV [BX][SI],ALCMPAGAIN: dec cxjnz againMOV AH,4CHINT 21HCODE ENDSEND START5、加密移动字符串,设缓冲区SBUFF中有20个小写字母a,将每个a加上它相对于缓冲区的位移量后传送到缓冲区DBUFF。

汇编作业必记51短程序练习

汇编作业必记51短程序练习

51汇编,最基础的短程序练习1:把片内RAM的30H处的值送往片外RAM的2000H处。

MOV A , 30HMOV DPTR, #2000HMOVX @DPTR, A作业要求:在30H处先赋值为(学号后三位mod 250),每步结果的相关部分截图连成word文档或博客,以下同。

2:假设A中的内容为34H,R0指向的单元内容为56H.执行下列指令后看结果。

MOV R6,#29HXCH A,R6SWAP AXCH A,R6XCHD A,@R0 ; 最后A=36H,((R0))=54H3:设1067H存在R1R0中,30A0H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。

MOV A,R0ADD A,R2MOV R4,AMOV A,R1ADDC A,R3MOV R5,A4:将外部RAM的100H单元中的内容送到外部RAM 的200H单元中。

MOV DPTR ,#0100HMOVX A, @DPTRMOV DPTR,#0200HMOVX @DPTR,A作业要求:在100H处先赋值为(学号后三位mod 250)5:把片内RAM的30H的值(是压缩BCD码)展开为非压缩BCD码放41H,42H处。

(高位放41H处)MOV A, 30HANL A, #0FHMOV 42H, AMOV A, 30HSWAP AANL A, #0FHMOV 41H, A作业要求:在30H处赋值后直接显示为学号后两位再开始6:将A扩大十倍(A值不大于25,不溢出)方法一:MOV B, #10MUL AB方法二:(不用MUL的办法)MOV B, AADD A, BMOV R0,AADD A, R0ADD A, BMOV B, AADD A, B作业要求:在A处赋值为学号最后一位(为0输倒第2位) 7:编程要求当R0中的数等于10H则R1赋0,小于10H则R1赋FF,大于10H则R1赋AAH。

CJNE R0, #10H,L1MOV R1,#0AJMP L3L1:JC L2 ;注1MOV R1,#0AAH ;注2AJMP L3L2:MOV R1,#0FFHL3:SJMP L37’:符号函数:当R0中的数=0则R1赋0,小于0则R1赋-1(即FFH),大于0则R1赋01H。

汇编练习题——精选推荐

汇编练习题——精选推荐

汇编练习题⼀、填空或选择题1. ⼆进制数1010111B转换成⼗六进制数是()。

A.A7HB.AEHC.87HD.57H2.设字长为8位,则有符号数-2的补码表⽰是()A.10000010B B.11111101B C.11111110B D.00000010B3.设字长为8位,则有符号数+2的补码表⽰是()A.10000010B B.11111101B C.11111110B D.00000010B4.书写汇编语⾔程序时规定,对字母开头的⼗六进制数,其前⾯必须加()A.0B.DC.BD.H5. IBM PC微机中,有符号数是⽤( )表⽰的A.原码B.补码C.反码D.BCD码6.⼗进制数-48的原码是,反码是,补码是。

7.典型的微机硬件系统是由系统总线将_____中央处理器_______、___储存器______和___输⼊输出⼦系统___连接起来的。

8.计算机中唯⼀代表存储空间中每个字节单元的地址的是(B)A.段地址B.物理地址C.逻辑地址D.偏移地址9. 在Intel8086微处理器中,⽤来保存各逻辑段的段地址的寄存器称为(C)。

A.变址寄存器B.标志寄存器C.段寄存器D.指令指针寄存器10.在Intel8086微处理器中,⽤来保存数据段的段地址的寄存器是( A )A.DS B. ES C. SS D. CS 【 ES附加段,CS代码段,SS堆栈段】11.在Intel8086微处理器中,⽤来保存代码段的段地址的寄存器是( D )A.DS B. ES C. SS D. CS12.在Intel8086微处理器中,⽤来保存堆栈段的段地址的寄存器是( C )A.DS B. ES C. SS D. CS13. 微处理器Intel8086中存放下⼀条将要执⾏的指令偏移地址的寄存器(A)A.SPB.AXC.DID.IP :存放代码段的偏移地址始终指向下⼀条的⾸地址14. 微处理器Intel8086中存放堆栈栈顶的偏移地址的寄存器是(A)A.SPB.AXC.DID.IP15. 下列答案中(A )反映了指令操作结果有溢出A.OF=1B.SF=1C.ZF=1D.CF=1进位标志CF零标志ZF符号标志SF溢出标志 OF 奇偶标志 PF 辅助进位标志AF16. 下列答案中(C )反映了指令操作结果等于0A.OF=1B.SF=1C.ZF=1D.CF=117. 下列答案中(B)反映了指令操作结果为负数A.OF=1B.SF=1C.ZF=1D.CF=118. 下列答案中(D)反映了指令操作结果有进位A.OF=1B.SF=1C.ZF=1D.CF=119.取指令时,默认的段寄存器是__________;堆栈操作时,默认的段寄存器是__________。

汇编语言程序设计基础练习一 (1)

汇编语言程序设计基础练习一 (1)

汇编语言程序设计练习一一填空题:1 设DS=2000H、BX=1256H,变量TABLE的偏移地址为20A1H,[232F7H]=3280H。

请问下列指令分别执行后,IP的值各是多少?①JMP BX ; IP=1256H②JMP TABLE[BX] ; IP=232f72 在8086/8088系统中,存储器是分段的,每段最大长度是2的16次方字节,段内偏移地址从0000 到FFFF H3 完成一个汇编语言程序的编制调试,通常需经过四个步骤:首先用编辑程序编出用户的源程序,然后通过运行汇编程序获得obj 程序(文件),接着运行连接装配程序,产生exe 程序(文件),最后通常使用dos 程序调试运行程序。

4 每个段都以符号segment 作为段的开始, 以语句ends 作为段的结束。

5 Intel 8086CPU的字长为16 位,地址总线为20 位,寻址范围为00000--FFFFFH6 在汇编语言中,一个标号和过程有near 和far 两种属性。

NEAR属性表明在段内转移和调用,FAR属性表示在段间转移和调用。

7 MOV AX,[1234H]指令中的源操作数的寻址方式为直接寻址方式,这是因为在代码中放入了操作数的所在的存储器地址。

8 8086/8088的存储器是分段的,因此存储单元的物理地址是由16d*段地址和偏移地址组合而成。

9 用二进制代码组成的计算机能直接识别的语言称为机器语言。

用机器指令的助记符以及伪指令,宏指令表示的一种面向机器的语言称汇编语言,用该语言编写的程序需经过汇编程序反汇编,成为计算机能直接识别并执行的程序称机器语言程序。

10 指令MOV AX,[BX+SI+10H]源操作数寻址方式是相对基址变址寻址方式。

11 存储器中,数据是以字节为单位存放的,它是一个8 位二进制数。

12 汇编语言源程序的扩展名是asm ,目标程序的扩展名是obj ,通常产生的可执行程序的扩展名是exe 。

汇编语言程序设计练习题

汇编语言程序设计练习题

汇编语言程序设计练习题汇编语言程序设计练习题1. 逆序输出字符串“BASED ADDRESSING”。

2. 从键盘上输入2个一位数,求出它们的和(假设和不超过1位)。

3. 试编写一段程序,要求在长度为100H字节的数组中,找出大于42H的无符号数的个数并存入字节单元UP中;找出小于42H的无符号数的个数并存入字节单元DOWN中。

4. 试编写一段程序,要求把键盘输入的小写字母用大写字母显示出来,其他字符保持不变。

5. 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。

6. 编写程序,将一个包含有20个数据的数组M分成2个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。

7. 试编写一段程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中。

8. 试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”, 若不相同则显示“NO MATCH”。

9. 试编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。

10. 从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。

11.有一个首地址为mem的100个字的数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。

12.从键盘上输入一串字符(用回车键结束,使用10号功能调用。

)放在STRING中,试编制一个程序测试字符串中是否存在数字。

如有,则把CL的第5位置1,否则将该位清0。

13.在首地址为DATA的字数组中,存放了100H个16位补码数,试编写一个程序,求出它们的平均值放在AX寄存器中;并求出数组中有多少个数小于此平均值,将结果放在BX 寄存器中。

14. 已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。

试编制一个程序,把既在A中又在B中出现的整数存放于数组C中。

汇编语言练习题

汇编语言练习题

汇编语言练习题一、计算器设计某公司要求你设计一个简单的计算器程序,用汇编语言来实现。

该计算器需要支持以下功能:1. 加法运算:用户输入两个数,计算器将它们相加后显示结果。

2. 减法运算:用户输入两个数,计算器将它们相减后显示结果。

3. 乘法运算:用户输入两个数,计算器将它们相乘后显示结果。

4. 除法运算:用户输入两个数,计算器将它们相除后显示结果。

5. 求余运算:用户输入两个数,计算器将它们相除后的余数显示结果。

你可以使用 x86 汇编语言来完成这个任务。

下面是一个简单的设计例子:```section .datamsg db '请输入两个数:',0msg_add db '加法运算结果:',0msg_sub db '减法运算结果:',0msg_mul db '乘法运算结果:',0msg_div db '除法运算结果:',0msg_mod db '求余运算结果:',0num1 db 0num2 db 0result db 0section .textglobal _start_start:; 输出提示信息,要求用户输入两个数 mov eax, 4mov ebx, 1mov edx, 14mov ecx, msgint 0x80; 读取第一个数mov eax, 3mov ebx, 0mov ecx, num1mov edx, 1int 0x80; 读取第二个数mov eax, 3mov ebx, 0mov ecx, num2mov edx, 1int 0x80; 加法运算mov al, [num1]add al, [num2]mov [result], al; 输出加法运算结果 mov eax, 4mov ebx, 1mov ecx, msg_add mov edx, 16int 0x80mov eax, 4mov ebx, 1mov edx, 1int 0x80; 减法运算mov al, [num1]sub al, [num2]mov [result], al; 输出减法运算结果 mov eax, 4mov ebx, 1mov ecx, msg_sub mov edx, 16int 0x80mov eax, 4mov ebx, 1mov ecx, resultmov edx, 1int 0x80; 乘法运算mul byte [num2]mov [result], al; 输出乘法运算结果mov eax, 4mov ebx, 1mov ecx, msg_mulmov edx, 16int 0x80mov eax, 4mov ebx, 1mov ecx, resultmov edx, 1int 0x80; 除法运算mov al, [num1]mov ah, 0 ; 清除 ah 寄存器 mov bl, [num2]div bl; 输出除法运算结果mov eax, 4mov ebx, 1mov ecx, msg_divmov edx, 16int 0x80mov eax, 4mov ebx, 1mov ecx, resultmov edx, 1int 0x80; 求余运算mov al, [num1]mov ah, 0 ; 清除 ah 寄存器 mov bl, [num2]div blmov [result], ah; 输出求余运算结果mov eax, 4mov ebx, 1mov ecx, msg_modmov edx, 16int 0x80mov eax, 4mov ebx, 1mov ecx, resultmov edx, 1int 0x80; 退出程序mov eax, 1xor ebx, ebxint 0x80```该程序首先向用户输出提示信息,要求用户输入两个数。

汇编程序练习

汇编程序练习
DATA
ENDS
;定义数据段结束
STACK
SEGMENT STACK
;定义堆栈段,这是组合类型伪指令,它规定在伪指令后须跟STACK类型名
DB 200 DUP(0)
;定义堆栈段为200个字节的连续存储区,且每个字节的值为0
STACK
ENDS
;定义堆栈段结束
CODE
SEGMENT
;定义代码段
ASSUME
DATA2 DB 0C1H, 36H, 9EH, 0D5H, 20H
DATAENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOVAX, DATA
MOVDS, AX
MOVCX, 5
MOVSI, 0
CLC
LOOPER:MOVAL,DATA2[SI]
ADCDATA1[SI],AL;与被加数相加
INCSI
DECCX
JNZLOOPER
MOVAH, 4CH
INT21H
CODEENDS
ENDSTART;源程序结束;
MOV
AH,4CH
;DOS功能调用语句,机器将结束本
INT
21H
程序的运行,并返回DOS状态
CODE
ENDS
;代码段结束
END
START
;整个程序汇编结束
第二题
(读懂下列程序,并补充注释)
要求将两个5字节十六进制数相加,可以编写出以下汇编语言源程序。
DATASEGMENT
DATA1 DB 0F8H, 60H, 0ACH, 74H, 3BH
汇编程序练习汇编语言练习题汇编程序汇编语言程序设计汇编小程序汇编程序100例什么是汇编语言程序反汇编程序汇编延时子程序mips汇编程序

汇编练习题

汇编练习题

汇编语言练习题一、基础知识类1. 列出汇编语言中的寄存器及其用途。

2. 解释汇编语言中的指令格式。

3. 什么是标志寄存器?它有哪些常用的标志位?4. 描述汇编程序的基本结构。

5. 如何在汇编语言中进行数据定义?二、数据传送类1. 将AX寄存器的值传送到BX寄存器。

2. 将内存单元[1000H]的值传送到CX寄存器。

3. 将数据段中的一个字节传送到AL寄存器。

4. 实现两个内存单元之间的数据交换。

5. 将一个字的数据传送到DX和AX寄存器。

三、算术运算类1. 计算H + 5678H,并将结果存储在AX寄存器中。

2. 计算H 5678H,并将结果存储在AX寄存器中。

3. 实现16位无符号数的乘法运算。

4. 实现16位无符号数的除法运算。

5. 使用汇编语言实现一个简单的加法计算器。

四、逻辑运算类1. 对AX寄存器的值进行按位取反操作。

2. 计算H和5678H的逻辑与运算结果。

3. 计算H和5678H的逻辑或运算结果。

4. 计算H和5678H的逻辑异或运算结果。

5. 实现一个简单的逻辑表达式求值程序。

五、控制转移类1. 实现一个无条件跳转指令。

2. 根据CX寄存器的值,实现一个循环结构。

3. 使用比较指令和跳转指令实现一个简单的排序算法。

4. 编写一个程序,判断一个数是否为素数。

5. 实现一个多分支选择结构。

六、字符串操作类1. 实现将一个字符串复制到另一个内存区域。

2. 实现字符串的逆序排列。

3. 计算一个字符串的长度。

4. 比较两个字符串是否相等。

5. 在一个字符串中查找某个字符的位置。

七、中断及系统调用类1. 编写一个简单的中断处理程序。

2. 使用INT 21H中断实现屏幕输出一个字符串。

3. 使用INT 21H中断读取键盘输入的字符串。

4. 编写一个程序,实现定时器中断。

5. 使用汇编语言实现系统调用,完成文件读写操作。

八、子程序设计类1. 编写一个子程序,用于计算两个数的最大公约数。

2. 实现一个子程序,能够将十进制数转换为十六进制数。

计算机编程专项练习13篇

计算机编程专项练习13篇

计算机编程专项练习13篇
本文档旨在为计算机编程专项练提供13篇完整版的题目。


个练题都是计算机编程领域的经典问题,可以帮助提升编程技能和
理解能力。

以下是文档中的每个题目的简介:
1. 简单算术运算:编写一个程序,在终端上接受两个数字输入,并输出它们的和、差、积和商。

2. 字符串反转:编写一个函数,接受一个字符串作为输入,然
后返回该字符串的反转。

3. 颠倒数组:编写一个函数,接受一个整数数组作为输入,然
后返回倒转顺序后的数组。

4. 素数判断:编写一个函数,判断一个给定的正整数是否是素数。

5. 邮箱验证:编写一个函数,接受一个字符串作为输入,然后
判断该字符串是否是有效的电子邮箱地址。

6. 斐波那契数列:编写一个函数,接受一个整数 n,然后返回斐波那契数列的第 n 项。

7. 反转链表:编写一个函数,反转链表的指针。

8. 查找最大值:编写一个函数,接受一个整数数组作为输入,然后返回数组中的最大值。

9. 二叉树遍历:实现二叉树的前序、中序和后序遍历。

10. 爬楼梯问题:编写一个函数,给定一个整数 n,表示楼梯的阶数,然后计算出走完楼梯共有多少种不同的方法。

11. 单词反转:编写一个函数,接受一个字符串作为输入,然后将字符串中的单词反转后输出。

12. 矩阵转置:编写一个函数,接受一个二维矩阵作为输入,然后将该矩阵转置后输出。

13. 快速排序:实现快速排序算法,可以对一个整数数组进行排序。

以上是《计算机编程专项练习13篇》文档中的所有题目。

希望这些练习题能够帮助你提升编程技能,并增进对计算机编程领域的理解。

三年级下册计算机编程练习题

三年级下册计算机编程练习题

三年级下册计算机编程练习题
1. 控制小恐龙行走
使用Scratch编程环境,设计一个小恐龙的行走动画。

当按下空格键时,小恐龙向前移动一段距离,松开空格键时停止移动。

可以使用适当的图形和音效来增强动画效果。

2. 数字计算器
使用Python编程语言,编写一个简单的数字计算器程序。

程序应该能够接收用户输入的两个数字,并根据用户选择执行加法、减法、乘法或除法运算。

输出结果应该以易于理解的方式呈现给用户。

3. 走迷宫
使用Blockly编程环境,设计一个迷宫游戏。

在游戏中,玩家通过控制角色的移动方向,尝试走出迷宫。

可以自定义迷宫的形状和难度级别,使游戏更具挑战性。

4. 音乐创作
使用音乐创作软件,如GarageBand或Audacity,设计一个简单的音乐作品。

可以选择自己喜欢的乐器和节奏,并尝试创建一个有趣的音乐片段。

可以根据需要添加和编辑音轨,以达到理想的音乐效果。

以上是一些适合三年级学生的计算机编程练习题目。

希望这些题目可以激发学生们对编程的兴趣和创造力,同时提高他们的计算机技能。

祝愿学生们在这些实践中取得成功!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机组成原理推荐书籍:《计算机组成原理》(秦磊华,清华大学出版社)计算机组成原理主要讨论计算机各大功能部件的基本组成原理及其互连构成整机的技术,课程的主要知识点包含:(1) 数据信息的表示,数值数据与非数值数据的表示方法与信息校验方法;(2) 信息处理,定点数与浮点数的四则运算/逻辑运算、运算器的组成与工作原理;(3) 存储器系统,存储器分级结构、半导体存储器、高速缓冲存储器cache的工作原理、cache与主存之间的各种映射与替换算法、虚拟存储器以及冗余阵列;(4) 指令系统,指令格式、寻址方式、指令格式设计与优化、复杂指令集CISC与精简指令集RISC、MIPS指令系统;(5) 中央处理器,CPU的功能与基本结构、指令执行流程、数据通路的基本组成与结构、时序控制、微程序控制器与硬布线控制器;(6) 流水线技术,流水线的分类、性能分析与指令级高度并行技术;(7) 输入输出系统,I/O系统的控制方法与接口电路、中断概念、中断分类、中断过程、中断屏蔽与中断响应等中断知识、DMA方式工作原理等内容。

操作系统原理推荐书籍:《操作系统原理》(庞丽萍,华中科技大学出版社)操作系统是计算机系统的核心构件,管理计算机的物理资源并为其它应用提供运行环境,课程的主要知识点包含:(1) 并发处理,进程与线程的区别、进程创建/撤销/阻塞/唤醒等控制操作、锁/信号灯/PV操作等同步机构、经典的生产者/消费者问题、管道/共享内存/消息队列等进程间通信方式;(2) 资源分配与调度,资源描述器/资源信息块等资源分配机制、先请求先服务/优先调度等资源分配策略、死锁的原因/避免/解决方法;(3) 进程调度,进程优先数调度、循环轮转调度、多级反馈队列调度等调度算法;(4) 主存管理,虚拟存储器与主存映射、程序的主存分配、分区存储管理的分配/回收/放置策略/碎片问题与拼接技术、页式存储管理的地址变换/请调策略/淘汰策略/置换算法、段式系统与段页式存储管理;(5) 文件系统,文件的逻辑组织与存取方法、连续文件/串联文件/随机文件/索引文件等文件的物理结构。

数据结构推荐书籍:《数据结构》(严蔚敏,清华大学出版社)数据结构的研究方法是将实际问题抽象成数学模型并应用到实际问题,研究内容是数据的逻辑结构、逻辑结构上定义的运算、数据的逻辑结构在计算机内部表示的物理结构、逻辑结构与物理结构的对应关系、基于物理结构的算法实现与效率分析。

课程的主要知识点包含:(1) 线性表,线性链表、循环链表与双向链表,链表的插入、删除与逆转,如何判断链表是否有环以及环的入口节点;(2) 栈与队列,入栈与出栈的序列、栈与递归的实现;(3) 串的模式匹配算法,KMP算法;(4) 树与二叉树,二叉树与线索二叉树的前序/中序/后续的递归/非递归遍历算法、树与森林的遍历、二叉排序树、平衡二叉树、赫夫曼树与红黑树等;(5) 图,数组表示法/邻接表/十字链表/邻接多重表等存储结构、图的深度优先搜索与广度优先搜索、最小生成树的Prim算法与Kruskal算法、最短路径的Dijkstra算法与Floyd算法;(6) 查找算法,二分查找要考虑边界条件、是否有溢出等情况,Hash函数的构造与处理冲突 的方法;(7) 内部排序算法,冒泡、插入、快排、堆排、归并、基数排序等,要注意对比不同内部排 序算法的平均时间复杂度、最坏情况的时间复杂度,额外的空间开销等;(8) 外部排序算法,主要针对数据量庞大而主存空间有限的情况,典型的算法是多路平衡归 并算法。

(9) 排列组合问题与动态规划问题。

计算机网络推荐书籍:《计算机网络:自顶向下方法》(库罗斯,机械工业出版社)计算机网络阐述了计算机网络最基本的原理,课程的主要知识点包含:(1) OSI与TCP/IP的体系结构,协议与层次划分;(2) 文件传送协议FTP、超文本传送协议HTTP、简单邮件传送协议SMTP、邮件读取协议POP3 与IMAP、简单网络管理协议SNMP;(3) HTTP的报文格式、定义的方法(GET、POST、HEAD、PUT与DELETE)、响应状态码含义,H TTP1.0与HTTP1.1的区别,传输模式分别为非持久连接与持久连接,域名系统DNS的解析过程 ;(4) 套接字Socket编程的关键函数;(5) 传输控制协议TCP与用户数据报协议UDP的区别;(6) TCP可靠传输的实现,以字节为单位的滑动窗口、超时重传时间的选择;(7) TCP的三次握手与四次挥手过程,TCP的有限状态机;(8) TCP的流量控制,利用滑动窗口实现流量控制;(9) TCP的拥塞控制,拥塞窗口、慢开始与拥塞避免、快重传与快恢复;(10) IP地址的分类,地址解析协议ARP、IP数据报的格式、子网划分与无分类编址CIDR;(11) 网际控制报文协议ICMP,PING的过程;(12) 路由选择协议,基于距离向量的内部网关协议RIP、基于链路状态的内部网关协议OSPF、外部网关协议BGP;(13) 以太网全双工通信的含义。

1.2 扩宽知识面深度与广度的研究生阶段知识的积累与关联研究生阶段是在本科生阶段的基础知识上,扩宽知识面的广度与深度,我的研究方向是网络 I/O虚拟化、网络功能虚拟化,主要是系统虚拟化与网络虚拟化的结合。

我在平时的学习研究工作中,比较注重Linux内核网络与虚拟化技术的积累与关联,推荐阅读的书籍包含《Li nux内核设计与实现》、《深入Linux内核架构》、《深入理解Linux网络技术内幕》、《Li nux内核源码剖析:TCP/IP实现》、《系统虚拟化原理与实现》以及《KVM虚拟化技术实战与 原理解析》。

从项目中锻炼实践能力研究生阶段中最令我映像深刻的项目是2013.10-2015.09期间参与的863项目子课题“FCoE传 输接口FPGA芯片的网卡原型”,该课题目标是实现高带宽、低延迟、支持虚拟化的FCoE存储 网传输接口芯片,芯片可支持PCIE主机接口与10Gbps的以太网网络接口。

我的工作是基于X ilinx ML605开发板与NetLogic AEL2005的物理层网卡芯片,构建并调试万兆以太网卡的网 络端数据通路与PCIE端数据通路,为SR-IOV网卡原型的最终实现奠定了基础,期间还阅读过 Intel 82599万兆以太网卡的驱动代码、PCIE与SR-IOV的官方标准文档。

回顾项目的点点滴 滴,为了配置物理层网卡芯片而查阅近400页的英文说明手册,周末与电子系的同学在实验 室联合调试网卡加速引擎,使用网络协议分析仪分析虚拟机以半虚拟化方式与SR-IOV方式登 录FCoE交换机失败的原因,所有的付出在项目成功通过验收的那一刻都变得值得。

把握最新的研究进展为了把握虚拟化领域最新的研究进展,我主要关注三个方面的研究动态:在学术界方面,我 根据《中国计算机学会推荐国际学术刊物》获知了虚拟化领域的国际顶级会议、期刊信息, 并且制定每个学期的研究文献阅读计划并输出自己的心得体会。

在开源社区方面,我主要关 注KVM、QEMU、Xen、Open vSwitch与Intel DPDK的代码提交情况以及年度技术峰会。

在工业 界方面,我主要关注VMware(威睿)、Microsoft(微软)、RedHat(红帽)、Citrix(思杰)等虚拟化厂商举办的技术峰会,阿里云的云栖大会以及云栖社区的在线技术直播。

不得不承认, 开源技术为云计算领域的开发者提供了很好的学习与就业机会。

2 找到一份适合自己的工作2.1 尽早准备在找实习之前,需要尽早地做准备工作,每一个offer收割机都是在求职前做了大量准备的 :(1) 明确工作岗位的专业技术要求,有针对性地进行准备;(2) 复习计算机专业基础知识,主要包括计算机组成原理、操作系统原理、数据结构与计算 机网络,这些是笔试/面试常问的基础知识点;(3) 平时要养成良好的代码风格,多在LeetCode与牛客网上刷题,并且结合《剑指offer》 、《技术之瞳:阿里巴巴技术笔试心得》、《程序员面试金典》等书籍。

值得大家注意的是 ,《技术之瞳:阿里巴巴技术笔试心得》是阿里招聘团队官方首次披露的笔试真题,而且由 阿里笔试官亲自解析(必须为我厂点赞!),涵盖了计算机基本原理、数学算法、Web前端 开发、数据分析与挖掘、安全和产品等多个方向的内容。

这样官方出品的书强烈推荐大家仔 细看,比各种野路子找来的资料权威多了;(4) 回顾自己所做的项目,需要对项目的整体框架与自己做的部分足够熟悉,面试官喜欢问的问题通常是:某个比较重要的点是怎样实现的?在项目中遇到的最大困难是什么?项目 某个部分考虑得不够全面,怎样优化?是否为某个开源项目提交过代码?谈一下某个开源项 目的最新研究进展有哪些?(5) 面完之后面试官通常都会问你,有什么问题需要问他,提的问题可以是关于公司技术研 究的趋势、新人的培养与成长体系等。

1.题目描述•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

题目描述•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述:连续输入字符串(输入2次,每个字符串长度小于100)输出描述:输出到长度为8的新字符串数组#include <iostream>#include <string>using namespace std;void func(string str) {if (str == "")return;if (str.size() <= 8) {str.append(8 - str.size(), '0');cout << str << endl;return;}cout << str.substr(0, 8) << endl;//0到7位不包含8func(str.substr(8, str.size()));//得到8以后的字符串,迭代}int main() {string str1, str2;cin >> str1 >> str2;func(str1);func(str2);return 0;}2题目描述明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。

然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。

相关文档
最新文档