POP CX POP DX
Ö®ºó£¬SP=? SS=? CX=? DX=? ²¢»Í¼Ö¸³ö¶ÑÕ»Öи÷µ¥ÔªµÄÄÚÈÝ¡£
½â´ð: SS=1000H
SP=1FFEH CX=2115H DX=5678H Õ»Öи÷µ¥ÔªÄÚÈÝÈçÏÂËùʾ:
µØÖ· RAM 11FFAH 2115 11FFCH 5678 11FFEH 1234 12000H
µÚ4Õ ºê»ã±àÓïÑÔ
ϰÌâÓë˼¿¼Ìâ
1.»³öÒÔϱäÁ¿ÔÚÄÚ´æÖд洢µÄʾÒâͼ¡£ D1 DB ¡®A¡¯,¡¯123¡¯,09H, 45 D2 DW ¡®A¡¯,¡¯CD¡¯,23H, 4567H D3 DD 1234H, 23456789H
2.Éè¼Æ×Ó³ÌÐò·Ö±ðÍê³ÉÒÔϹ¦ÄÜ£º
1£©¸ù¾Ý¸ø¶¨µÄ²ÎÊýÖµ£¬ÅжϸòÎÊýÊÇżÊý»¹ÊÇÆæÊý¡£ 2£©°Ñ¸ø¶¨²ÎÊýÖµµÄ¸ß¡¢µÍÊý¾Ý뻥»»¡£
3.Éè¼ÆÏàÓ¦µÄºêÍê³ÉÒÔϹ¦ÄÜ£º 1£©°Ñ¸ø¶¨µÄ²ÎÊý°´¶þ½øÖÆÏÔʾ¡£
2£©ÇóÁ½¸ö²ÎÊýµÄºÍ£¬²¢°´Ê®½øÖÆÐÎʽÏÔʾ¡£ 6
·¶ÎÄ·¶Àý ѧϰָµ¼
µÚ5Õ »ã±àÓïÑÔ³ÌÐòÉè¼Æ
ϰÌâÓë˼¿¼Ìâ
1. ÉèÊý¾Ý¶ÎÖÐÓÐ×Ö½ÚÐ͵¥ÔªNUMBERºÍFLAG£¬ÅжÏNUMBERÓë¸ø¶¨µÄXºÍYµÄ´óС¹ØÏµ(X ½â´ð£º.486 Data segment NUMBER db ? FLAG db ? Data ends Code segment Assume cs: Code, ds: Data Beg: mov ax,data Mov ds,ax mov al, X Mov bl, Y Cmp NUMBER, X Jnc P1 Mov FLAG, 0FFH Jmp exit P1: cmp NUMBER, Y Ja P2 Mov FLAG, 00H Jmp exit P2: mov FLAG, 01H Exit: mov ah, 4ch Int 21h Code ends End Beg 2. ¼ÆËã1£«2£«3£«¡£«100£¬²¢°ÑºÍ±£´æÔÚSUMµ¥ÔªÖС£ .486 DATA SEGMENT USE16 TT DB 1 SUM DW ? DATA ENDS CODE SEGMENT USE16 wordÍêÃÀÕûÀí°æ ASSUME CS:CODE,DS:DATA BEG: MOV AX , DATA MOV DS, AX MOV CX, 100 MOV AX, 0 START: ADD AX, TT INC TT LOOP START MOV SUM, AX MOV AH, 4CH MOV 21H CODE ENDS END BEG 3. ¶ÔÒ»¸ö¸ø¶¨µÄNÊý¾Ý£¬ÓÃðÅÝÅÅÐò·¨½øÐÐÅÅÐò¡£ ½â´ð£º.486 Data segment Buf db ¡®abcd18437hj¡¯ Lens equ $-buf Count db lens Flag db ? Data ends Code segment Assume cs: code, ds: data Beg: mov ax, data Mov ds, ax Again: dec count Jz done Mov flag, 0 Mov cx, count Mov si, offset buf Last: mov al, [si] Mov ah, [si+1] Cmp ah, al Jnc next Mov [si], ah Mv [si+1], al Mov flag, 1 Next: inc si 8 ·¶ÎÄ·¶Àý ѧϰָµ¼ Loop last Cmp flag, 1 Je again Done: mov buf+lens, ¡®$¡¯ Mov ah, 9 Mov dx, offset buf Int 21h Mov ah, 4ch Int 21h Code ends End Beg 4. ÓɼüÅÌÊäÈëÈÎÒâµÄÁ½¸öÊ®½øÖÆÊý£¬È»ºóת»»³É¶ÔÓ¦µÄѹËõBCDÂëµÄÐÎʽÔÚÆÁÄ»ÉÏÏÔʾ¡£ .486 DATA SEGMENT USE16 BCD DB ? BUF DB 3 DB ? DB 3DUP(?) MESG1 DB ¡®PLEASE INPUT :¡¯,0DH,OAH,¡¯$¡¯ MESG2 DB ¡®ERROR! NUMBER IS FROM 0 TO 9. PLEASE AGAIN!$¡¯ DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG: MOV AX , DATA MOV DS, AX L1: MOV DX, OFFSET MESG1 MOV AH, 9 ;ÏÔʾMESG1 INT 21H MOV AH, 0AH MOV DX, OFFSET BUF INT 21H £»ÊäÈë×Ö·û´® MOV AL£¬ BUF+2 CMP AL£¬ 30H JC ERROR CMP AL£¬ 3AH JC NEXT £»ÅжϵÚÒ»¸öÊýÊäÈëÊÇ·ñ·ûºÏÒªÇó ERROR£º MOV DX£¬ OFFSET MESG2 wordÍêÃÀÕûÀí°æ MOV AH£¬ 9 INT 21H JMP L1 £»ÊäÈë´íÎóÌáÊ¾ÖØÐÂÊäÈë NEXT£º SUB AL£¬ 30H SAL AL£¬ 4 £»Çó³öʮλÊý×Ö MOV BCD£¬ AL MOV AL£¬ BUF+3 CMP AL£¬ 30H JC ERROR CMP AL£¬ 3AH JNC ERROR £»Åжϵڶþ¸öÊýÊäÈëÊÇ·ñ·ûºÏÒªÇó SUB AL£¬ 30H OR BCD£¬ AL MOV AH£¬ 4CH INT 21H CODE ENDS END BEG 5. ÓɼüÅÌÊäÈëÁ½¸öÊ®Áù½øÖÆÊý£¬×ª»»³ÉµÈÖµµÄÊ®½øÖÆÊýºóÔÚÆÁÄ»ÉÏÏÔʾ¡£ CMPDISP MACRO NN ;ÓúêÓï¾äÍê³É±È½Ï·¨¶þ½øÖƵ½Ê®½øÖÆ×ª»» LOCAL LAST,NEXT MOV DL, 0 LAST: CMP NUM, NN JC NEXT INC DL SUB NUM, NN JMP LAST NEXT: ADD DL, 30H MOV AH, 2 INT 21H ENDM DATA SEGMENT USE16 NUM DB ? BUF DB 3 DB ? DB 3DUP(?) DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA 10