上海大学汇编分析及编程题复习_第1页
上海大学汇编分析及编程题复习_第2页
上海大学汇编分析及编程题复习_第3页
上海大学汇编分析及编程题复习_第4页
上海大学汇编分析及编程题复习_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编程复习程序分析1、阅读如下程序段,回答所提出的问题。

MOV BX,1110000011110001B XOR AX,AX MOV CX,16NEXT: ROL BX, 1 JC SKIP INC AXSKIP: LOOP NEXT指出程序段完成的功能?程序段执行完后,寄存器AX的值是多少?

统计BX中数的二进制表示中0的个数,并存放在AX中。(AX)=8程序分析2、阅读如下程序段,回答所提出的问题。

X DW 3,-5,8,7,-2,0,0,0,0,0 Y DW 20,80,10,50,40,30,60,10,20,70 ZDW 10DUP(0)

...... MOV SI,0 SUB DX,DXAGAIN:MOV AX,X[SI] ADD DX,AX CMP AX,0 JZ EXIT JL NEXT ADD AX,X[SI]NEXT:ADD AX,Y[SI] MOV Z[SI],AX ADD SI,2 JMP AGAINEXIT:

问执行后(1)DX和SI的内容是多少?(2)(Z+2)、(Z+4)、(Z+16)的内容是什么?267526643800注、十进制数DX:11SI:10程序分析3.在ARY中存放了COUNT个无符号数,下面程序段找出最小奇数并送入EMIN单元中,请在每个横线处填一条指令补充完整。ARY DB11,10,21,5,34H,57,97H,127,77H,…COUNTEQU$-ARYEMIN DB?…… LEA BX,ARY MOV CX,COUNT MOV AL,ARYLOP1:CMP[BX],AL

JE NEXT MOV AL,[BX]NEXT:

LOOP LOP1 MOV EMIN,ALJAENEXT(或JANEXT)

TEST BYTEPTR[BX],01H

INCBX或ADDBX,1程序分析4、已知(CS)=2300H,(IP)=32B4H,且在数据段中有定义:

ARYDB0AH,28H,00H,3FH

分别给出下列指令执行后的CS和IP的内容:

A、LEABX,ARYJMPWORDPTR[BX]B、MOVBX,OFFSETARYCALLWORDPTR[BX]C、MOVBX,OFFSETARYJMPDWORDPTR[BX](CS)=2300H(IP)=280AH(CS)=2300H(IP)=280AH(CS)=3F00H(IP)=280AH程序分析5、

MOVAL,0MOVBL,0MOVCX,10L1:INCBLINCBLADDAL,BLLOOPLI程序的功能是

,画出程序的流程图。

程序的功能是求2468101214161820的和

程序分析6、MOVAX,4BD5HMOVBL,0MOVDL,0MOVCX,16L1:SHLAX,1JCL2INCBLJMPL3L2:INCDLL3:LOOPL1程序的功能是___________,程序执行后BL=_________,DL=_________,AX=_________。

程序的功能是分别统计4BD5H中的0、1的个数,0的个数放BL,1的个数放DL,程序执行后BL=7,DL=9,AX=0。编程题1按如下要求,编写一个完整的字符串输入、处理和输出程序,其中3、4、5要求各采用一个子程序实现。1.编写数据段,定义80个字节的字符串存储区String1,String2,String3,并定义其它所需的变量和数据。2.编写完整的代码段和主程序,调用如下子程序,实现字符串输入、处理和输出。3.编写输入子程序,从键盘输入最多80字符的字符串并存放到String1中。4.编写字符串处理子程序,实现如下功能:1)将String1中的数字用‘*’代替,然后存放在String2中;2)将String1中的小写字母转换成大写字母,结果存放在String3中;本子程序的参数定义要求如下:bx----String1的首地址;si----String2的首地址;di----String3的首地址;cx---字符串的长度。5.编写输出子程序,按String2,String3的顺序输出处理后的字符串。编程题参考代码;1)DATASEGMENTSTRING1DB80,?,81DUP(?)STRING2DB81DUP(?)STRING3DB81DUP(?)DATA ENDS;2)CODE SEGMENT ASSUMECS:CODE,DS:DATAMAIN PROC FARSTART:PUSH DS SUB AX,AX PUSH AX MOV AX, DATA MOV DS,AX CALL INPUT LEA BX,STRING1+2 LEA SI,STRING2 LEA DI,STRING3 MOV CL,STRINg1+1 MOV CH,0 CALL STR_REP CALL OUTPUT RETMAIN ENDP

编程题参考代码;3)INPUTPROCNEAR LEADX,STRING1 MOVAH, 0AH INT 21H RETINPUTENDP;4)STR_REPPROCNEARNEXT:MOVAL,[BX] CMPAL,30H JLL1 CMPAL,39H JGL1 MOVAL,‘*’L1: MOV[SI],AL MOVAL,[BX] CMPAL,‘a’ JLL2 CMPAL,‘z’ JGL2 SUBAL,20HL2: MOV[DI],AL INCDI INCSI LOOP NEXT RETSTR_REPENDP编程题参考代码;5)OUTPUTPROCNEAR MOVBL,STRING1+1 MOVBH,0 MOVSTRING2[BX],’$’ MOVSTRING3[BX],’$’ LEASTRING2 MOVAH, 09H INT21H LEASTRING3 MOVAH, 09H INT21H RETOUTPUT ENDPCODE ENDS ENDSTART编程题2用移位指令将X乘以30,结果存入Y单元。

DatasegmentXDB?Ydw?DataendsCodesegmentAssumecs:code,ds:dataStart: Movax,data Movds,ax MovAL,X MOVAH,0 MovCL,1 MOVDX,AX SHLDX,CL MOVCL,5 SHLAX,CL SUBAX,DX MOVY,AX Movah,4ch Int21hCodeendsENDSTART编程题3从键盘输入一个字符串,再将它按相反次序输出在下一行。DatasegmentStrDB50,?,50dup(?)DataendsCodesegmentAssumecs:code,ds:dataStart: Movax,data Movds,ax MOVAH,10 LEADX,STR INT21H MOVCL,STR+1 MOVCH,0 MOVBX,CXNEXT:MOVDL,STR[BX+1] MOVAH,2 INT21H DECBX LOOPNEXT Movah,4ch Int21hCodeendsENDSTART编程题4从键盘输入两个一位数,求它们的和,将结果输出,分别用子程序完成。

CodesegmentAssumecs:codeMAINPROCFARPUSHDSMOVAX,0PUSHAXMOVAH,1INT21HMOVDL,ALINT21HMOVBL,ALCALLADDITIONCALLSHOWRETMAINENDPADDITIONPROCNEAR;参数是DL、BL,返回DLSUBBL,30HSUBDL,30HADDDL,BLRETADDITIONENDPSHOWPROCNEAR;参数是DL MOVAL,DL CBW MOVBL,10 DIVBL;分离个位与十位数

MOVBH,AH CMPAL,0 JENEXT MOVDL,AL;十位数

ADDDL,30H MOVAH,2 INT21HNEXT:MOVDL,BH;个位数

ADDDL,30H MOVAH,2 INT21H RETSHOWENDPCodeendsENDmain数据定义按照给定的条件为程序定义一个数据段,并画出存储单元的示意图:1、STR是字符串THISISADATA_SEGMENT。2、DAT1是字节变量,初值为23,4BH,126,0D3H。3、DAT2是16进制数字变量,初值为100,255,2DUP(3,5)4、LEN是以上存储单元的字节数。答:DATASEGMENT STRDB‘THISISADATA_SEGMENT’ DAT1DB23,4BH,126,0D3H DAT2DW100,255,2DUP(3,5) LENEQU$-STR DATAENDS

存储区内容数据数值举例数据数值举例数据数值举例数据数值举例54‘T’4117230048544B4B0349417E12600535F‘_’D30D30520‘

‘53‘S’641000049‘I’45005347FF20‘

‘4D0041‘A’450320‘

‘4E0044‘D’5405写程序段1、将AL中的两位BCD码分离,分别存放DL和DH中。答:MOVDH,ALMOVDL,ALANDDL,0FHMOVCL,4SHRDH,CLANDDH,0FH

2、将DL中的4位二进制数转换成16进制数的ASCII码。答:ADDDL,30HCMPDL,3aHJBNEXTADDDL,7NEXT:写程序段3、将AL中的8位二进制数高4位和低4位交换。答: MOVCL,4 RORAL,CL4、将AL和BL中的非压缩BCD码合并成一个压缩的BCD码,存在AL中。答: ANDAL,0FH MOVCL,4 SHLAL,CL ANDBL,0FH ORAL,BL5、将AL中的8位有符号数转换成它的绝对值。6、用串扫描指令在一个字符串中查找字符'*'。答:设字符串变量为str,长度在CX中。

MOVAL,’*’ LEADI,STR REPNESCASB JNEEXIT DECDI;DI指向的为“*”EXIT:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论