1、ax,clal,0FHBYTEPTRxsi,alpopaddsi,2Looplopal,Xbl,X+2cl,X+4dl,X+6ah,02Hint21Hdl,aldl,bldl,clexit:retENDPENDstart5.3试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示MATCH,若不相同则显示NO MATCH。datasegmentstring1db111111111,13,10,$string2222222222inf1match!inf2noendscodesegmentmainprocfarassumeds:data,cs:code,es
2、:codedsax,0axax,datads,axes,axleasi,string1di,string2cx,9repzcmpsbjzmatchdx,inf2jmpdispmatch:dx,inf1disp:ah,0921hendpendstart5.4试编写一程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCII码为07H)。farsubax,axah,01Hcmpal,20Hjeexital,30Hjleinputal,3AHjgecx,axcx,0FFHdl,07Hah,2Hloopendp5.5编写程序,将一个包含有20个数据的数组M分成两个数组:正数数组P和负数数组N,
3、并分别把这两个数组中数据的个数显示出来。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
4、AL, 0 ;和0比较 JGE NEXT0 ;大于等于0,转 INC BL ;小于0, BL加1 JMP NEXT1 ; NEXT1 NEXT0: INC DL ; 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 end
5、sdata 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:data endscode segmentassume cs:code,ss:stacks,ds: mov ax,datamov ds,axlea dx,inputmov ah,9int 21hlea dx, charmov ah,0ahlea dx,entermov si,2mov cx,4l0: mov bl,charsicmp bl,
6、30hjb startcmp bl,39hjbe l00cmp bl,61hcmp bl,66hja startsub bl,57hjmp l333l00: sub bl,30hl333:mov charsi,blinc sidec cxjnz l0lea dx,outputl000:mov bl,charsimov ch,4mov cl,4shl bl,clll00:test bl,80hjnz l1mov dl,0mov ah,2jmp l2l1: mov dl,1l2: shl bl,1dec chjnz ll00cmp si,6jne l000mov ah,4chcode endsen
7、d start5.7设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数,并以格式“SUNXXXX”显示出次数。 Z,0 esi,ENGlp1:lodsblp2: al,toQuitSjnz lp1U lp2Ninc ZtoQuit:5.8有一个首地址为MEM的100D字数组,试编制程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零。stack.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
8、,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,2ax,0ax,datads,ax-ax,0Hbx,64Hcx,64Hsi,0FFFEHrepeat:ADDsi,2HMEMsi,0HJEcallsrepeatcalls:INCcallsortax,1HlastValueDEClastValue:membx,0HNEARsis:dx,memsimemsi+2,dxsreturn:5.9在STRIN
9、G到STRING+99单元中存放着一个字符串,试编制一程序测试该字符串中是否存在数字。如有,则把CL的第5位置1,否则将该位置0。XOR EBX,EBXMOV ESI,OFFSETSTRING MOV ECX,99START_LOOP: LODSB CMP AL, JC LOOP_NEXT9 JNC LOOP_NEXT OR BL,10HLOOP_NEXT: LOOP START_LOOPMOV CL,BL5.10在首地址为TABLE的数组中按递增次序存放着100H个16位补码数。试编写一个程序把出现次数最多的数及其出现次数分别存放于AX和CX中。segment Table dw 0,1,2,
10、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, mov ds, ax - mov si, offset Table mov ax, si ax存放最大数 mov bx, bx存放最小数 mov cx, 199 循环199次 C001: inc si mov dx, cmp dx, jg C002 bx jl C003 jmp C0
11、04 C002: dx C003: C004: loop C001 保存结果 mov Result, mov Result+2, 200 C005: xor dx, push cx mov di, C006: di cmp ax, jnz C007 inc dx C007: inc di loop C006 pop cx Result+6 jle C008 mov Result+4, mov Result+6, C008: loop C005 ax,4c00h int 21h ends end start 最后结果 Result 9, -1, 5, 365.11试编制一个程序,把AX中的十六进
12、制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的4个字节中。例如,当(AX)2A49H时,程序执行完后,MEM中的4个字节内容分别为39H,34H,41H和32H。xY,yNendscs:code,ds,dataax,dataah,0121hal,ajaabcabc:zjbabc1abc1:dl,offsetah,9Aabab:Zab1ab1:acac:ah,4ch5.12已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一程序,把既在A中又在B中出现的整数存放于数组C中。DATASEGMENTADB 1,3,4,6,10,12,15,21,33,
13、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 (?)ENDSCODEASSUME DS:DATA,CS:CODESTART:MOVAX,DATADS,AXLEASI,ABX,ZCX,15CLDLOP1:LODSBPUSHCX(保存外环CX)CX,20(内环次数)DI,B(每次内环完,重新赋值)LOP2:CMPAL,DILOP3(相等,退出内环)DILOOPLOP2JMPLOP4(内环完毕而没有相等的就直接到外环)LOP3:BX,ALBXLOP4:POPCX(外环出栈)LOP1AH,4CHINT21HSTART5.13从键盘输入一系列字符(以回车符结束),并按字母、数字及其他字符分类计数,最后显示出这三类的计数结果。datarea count 0,0,0 分别存放字母、字母和其他字符的个数 datarea main proc far push ds sub ax,ax push ax,datarea dx,ax next: ah,01 判断是否为字母 cmp al,0dh jz exit al,5ah jg other al,41h jl shuzi
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1