汇编语言编程题目资料答案.doc_第1页
汇编语言编程题目资料答案.doc_第2页
汇编语言编程题目资料答案.doc_第3页
汇编语言编程题目资料答案.doc_第4页
汇编语言编程题目资料答案.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

5.1编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序用大写字母显示这三个字符。【解】:MAIN PROC FARstart:push dssub ax,axpush axinput:mov ah,7Hint 21Hcmpe:cmp al,20HJE exitcmp al,61HJL inputcmp al,7AHJG inputprint:sub al,01Hmov dl,almov ah,02Hint 21Hadd al,01Hmov dl,almov ah,02Hint 21Hadd al,01Hmov dl,almov ah,02Hint 21H;输出换行回车mov dl,0AHmov ah,02Hint 21Hjmp inputexit :retMAIN ENDPEND start5.2将AX寄存器中的16位数分成4组,每组4位,然后把这4组数分别放在AL、BL、CL和DL中。【解】:DB4dup(?).stack100H.codeMAINPROCFARstart:pushdsandax,00Hpushaxmovax,1234Hmovcx,04Hmovsi,00Hlop:pushcxmovcl,04Hrolax,clpushaxandal,0FHmovBYTEPTRxsi,alpopaxpopcxaddsi,2Looplopmoval,Xmovbl,X+2movcl,X+4movdl,X+6print:movah,02Hint21Hmovdl,almovah,02Hint21Hmovdl,blmovah,02Hint21Hmovdl,clmovah,02Hint21Hexit:retMAINENDPENDstart5.3试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示MATCH,若不相同则显示NO MATCH。【解】:datasegmentstring1db111111111,13,10,$string2db222222222,13,10,$inf1dbmatch!,13,10,$inf2dbnomatch!,13,10,$dataendscodesegmentmainprocfarassumeds:data,cs:code,es:codestart:pushdsmovax,0pushaxmovax,datamovds,axmoves,axleasi,string1leadi,string2movcx,9repzcmpsbjzmatchleadx,inf2jmpdispmatch:leadx,inf1disp:movah,09int21hretmainendpcodeendsendstart5.4试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCII码为07H)。【解】:mainprocfarstart:pushdssubax,axpushaxinput:movah,01Hint21Hcmpal,20Hjeexitcmpal,30Hjleinputcmpal,3AHjgeinputsubal,30Hmovcx,axandcx,0FFHlop:movdl,07Hmovah,2Hint21Hlooplopjmpinputexit:retmainendpendstart5.5编写程序,将一个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。【解】:DATA SEGMENT BUF DB -32, 25, 36, -18, -64, 0, -3 COUNT EQU $ - BUF PLUS DB ? ; 存放正数 MINUS DB ? ; 存放负数 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX MOV BL, 0 ; 负数个数 MOV DL, 0 ; 正数个数 MOV SI, OFFSET BUF ; 首地址 MOV CX, COUNT ; 循环次数 LOP1: MOV AL, SI ; 取第一个数 CMP AL, 0 ; 和0比较 JGE NEXT0 ; 大于等于0,转 INC BL ; 小于0, BL加1 JMP NEXT1 ; 转 NEXT1 NEXT0: INC DL ;大于等于0, DL加1 NEXT1: INC SI ; 指针增1 DEC CX ; 循环次数减1 JNZ LOP1 ; CX不等于0,转回 MOV MINUS, BL ; 存储负数个数 MOV PLUS, DL ; 存储正数个数 CODE ENDS END START 5.6试编写一汇编语言程序,要求从键盘接收一个4位的十六进制数,并在终端上显示与它等值的二进制数。【解】:stacks segment stacks db 20 dup(0)stacks endsdata segmentn equ 4char db n+1 ;输入内存字符db 0db n+1 dup(0)input db Input the number:,0dh,0ah,$enter db 0dh,0ah,$output db Result is:,0dh,0ah,$data endscode segmentassume cs:code,ss:stacks,ds:datastart: mov ax,datamov ds,axlea dx,inputmov ah,9int 21hlea dx, charmov ah,0ahint 21hlea dx,entermov ah,9int 21hmov si,2mov cx,4l0: mov bl,charsicmp bl,30hjb startcmp bl,39hjbe l00cmp bl,61hjb startcmp bl,66hja startsub bl,57hjmp l333l00: sub bl,30hl333:mov charsi,blinc sidec cxjnz l0lea dx,outputmov ah,9int 21hmov si,2l000:mov bl,charsimov ch,4mov cl,4shl bl,clll00:test bl,80hjnz l1mov dl,0mov ah,2int 21hjmp l2l1: mov dl,1mov ah,2int 21hl2: shl bl,1dec chjnz ll00inc sicmp si,6jne l000mov ah,4chint 21hcode endsend start5.7设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数,并以格式“SUNXXXX”显示出次数。【解】:mov Z,0lea esi,ENGlp1:lodsblp2:cmp al,$jztoQuitcmp al,Sjnz lp1lodsbcmp al,Ujnz lp2lodsbcmp al,Njnz lp2inc Zjmp lp1toQuit:5.8有一个首地址为MEM的100D字数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。【解】:stack100H.datamemdw12,0,0,0,0,0,1,2,3,6,4,7,8,2,1,0,0,54,5,0,2,4,7,8,0,5,6,2,1,4,8,5,1,45,7,5,1,2,0,2,4,0,2,54,0,12,0,0,0,0,0,1,2,3,6,4,7,8,2,1,0,0,54,5,0,2,4,7,8,0,5,6,2,1,4,8,5,1,45,7,5,1,2,0,2,4,0,2,54,0,45,7,5,1,2,0,2,4,0,2.codeMAINPROCFARstart:pushdsandax,0pushaxmovax,datamovds,ax;-movax,0Hmovbx,64Hmovcx,64Hmovsi,0FFFEHrepeat:ADDsi,2HcmpMEMsi,0HJEcallslooprepeatcalls:INCaxcallsortcmpax,1HJElastValueDECcxjmprepeatexit:retlastValue:movmembx,0HDECcxjmprepeatMAINENDPsortPROCNEARpushcxpushsisubsi,2Hs:addsi,2Hmovdx,memsimovmemsi+2,dxloopsreturn:popsipopcxretsortENDPENDstart5.9在STRING到STRING+99单元中存放着一个字符串,试编制一程序测试该字符串中是否存在数字。如有,则把CL的第5位置1,否则将该位置0。【解】:XOR EBX,EBXMOV ESI,OFFSETSTRING MOV ECX,99START_LOOP: LODSB CMP AL,0 JC LOOP_NEXT CMP AL,9 JNC LOOP_NEXT OR BL,10HLOOP_NEXT: LOOP START_LOOP MOV CL,BL5.10在首地址为TABLE的数组中按递增次序存放着100H个16位补码数。试编写一个程序把出现次数最多的数及其出现次数分别存放于AX和CX中。【解】:datasegment Table dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 dw 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-1,-1 Result dw 0,0,0,0 data ends code segment assume cs:code,ds:data start: mov ax, data mov ds, ax ;- mov si, offset Table mov ax, si ; ax存放最大数 mov bx, si ; bx存放最小数 mov cx, 199 ; 循环199次 C001: inc si inc si mov dx, si cmp dx, ax jg C002 cmp dx, bx jl C003 jmp C004 C002: mov ax, dx jmp C004 C003: mov bx, dx C004: loop C001 ; 保存结果 mov Result, ax mov Result+2, bx ;- mov si, offset Table mov cx, 200 C005: mov ax, si xor dx, dx ;- push cx mov di, offset Table mov cx, 200 C006: mov bx, di cmp ax, bx jnz C007 inc dx C007: inc di inc di loop C006 pop cx ;- cmp dx, Result+6 jle C008 mov Result+4, ax mov Result+6, dx C008: inc si inc si loop C005 ;- mov ax,4c00h int 21h code ends end start ; 最后结果 Result 9, -1, 5, 365.11试编制一个程序,把AX中的十六进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的4个字节中。例如,当(AX)2A49H时,程序执行完后,MEM中的4个字节内容分别为39H,34H,41H和32H。【解】:datasegmentxdbY,$ydbN,$dataendscodesegmentassumecs:code,ds,datastart:movax,datamovds,axmovah,01int21hcmpal,ajaabcabc:cmpal,zjbabc1retabc1:movdl,offsetxmovah,9int21hretcmpal,Ajaabab:cmpal,Zjbab1retab1:movdl,offsetxmovah,9int21hretcmpal,zjaaccmpal,Ajbacac:movdl,offsetymovah,9int21hretmovah,4chint21hcodeendsendstart5.12已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一程序,把既在A中又在B中出现的整数存放于数组C中。【解】:DATASEGMENTADB 1,3,4,6,10,12,15,21,33,2,40,42,46,48,55BDB 2,3,6,21,33,41,55,88,8,66,21,10,22,23,56,48,50,51,89,100ZDB 15 DUP (?)DATAENDSCODESEGMENTASSUME DS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXLEASI,ALEABX,ZMOVCX,15CLDLOP1:LODSBPUSHCX(保存外环CX)MOVCX,20(内环次数)LEADI,B(每次内环完,重新赋值)LOP2:CMPAL,DIJELOP3(相等,退出内环)INCDILOOPLOP2JMPLOP4(内环完毕而没有相等的就直接到外环)LOP3:MOVBX,ALINCBXLOP4:POPCX(外环出栈)LOOPLOP1MOVAH,4CHINT21HCODEENDSENDSTART5.13从键盘输入一系列字符(以回车符结束),并按字母、数字及其他字符

温馨提示

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

评论

0/150

提交评论