STACKS SEGMENT
;´Ë´¦ÊäÈë¶ÑÕ»¶Î´úÂë STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX lea dx,input mov ah ,9 int 21h
mov ah ,1;´Ë´¦ÊäÈë´úÂë¾Ý¶Î´úÂë int 21h
and al,0fh mov bl,al
mov dl,'+' mov ah,2 int 21h
mov buf ,al mov ah,1 int 21h
mov buf+2 ,al and al,0fh add al,bl daa
mov bl,al mov dl,'=' mov ah,2 int 21h mov al,bl mov cl,4 shr al,cl or al,30h
mov dl,al mov ah,2 int 21h
21
mov buf+4,al and bl,0fh or bl,30h
mov buf+5,al mov dl,bl mov ah,2 int 21h
MOV AH,4CH INT 21H CODES ENDS END START
ÔËÐнá¹û INPUT 0-9:4+5=09
2¡¢±àд³ÌÐòʵÏÖ´Ó¼üÅÌÉÏÊäÈëÒ»´®×Ö·û£¬È»ºóÔÚÏÂÒ»ÐÐÏÔʾ³öÀ´¡£ DATAS SEGMENT BUF DB 50 DB 0
DB 50 DUP(0)
CRLF DB 0DH,0AH,'$';´Ë´¦ÊäÈëÊý¾Ý¶Î´úÂë DATAS ENDS
STACKS SEGMENT
;´Ë´¦ÊäÈë¶ÑÕ»¶Î´úÂë STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX
LEA DX ,BUF;´Ë´¦ÊäÈë´úÂë¾Ý¶Î´úÂë MOV AH,10 INT 21H LEA DX,CRLF MOV AH,9 INT 21H
MOV BL,BUF+1 MOV BH,0
MOV BYTE PTR BUF+2[BX],'$' LEA DX,BUF+2 MOV AH,9
22
INT 21H MOV AH,4CH INT 21H CODES ENDS END START
ÔËÐнá¹û aihgeriu$ aihgeriu
3¡¢±àд³ÌÐòʵÏÖÊäÈëÒÔ¿Õ¸ñ¿ªÊ¼ÒÔ¿Õ¸ñ½áÊøµÄÒ»´®×Ö·û£¬²¢ÔÚÁíÒ»ÐÐÏÔʾ¡£ ²¿·Ö²Î¿¼³ÌÐò£º£¨ÇëͬѧÃDz¹³äÏÔʾ³ÌÐò¶Î£©
DATAS SEGMENT
buffer db 80hdup(?) ;´Ë´¦ÊäÈëÊý¾Ý¶Î´úÂë flag db ?
crlf db 0dh,0ah,'$'
DATAS ENDS
STACKS SEGMENT
;´Ë´¦ÊäÈë¶ÑÕ»¶Î´úÂë STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX
mov bx,offset buffer mov flag,0
next: mov ah,01h int 21h
test flag,01h jnz follow cmp al,20h jnz exit mov flag,1 jmp next
follow: cmp al,20h jz exit
mov [bx],al inc bx jmp next exit: lea dx,crlf mov ah,9 int 21h
mov byte ptr buffer [bx],'$' lea dx,buffer mov ah,9
int 21h;´Ë´¦ÊäÈë´úÂë¾Ý¶Î´úÂë MOV AH,4CH
23
INT 21H CODES ENDS
END START ÔËÐнá¹û Abcdef Abcdef ¡¾Ô¤Ï°ÒªÇó¡¿
1¡¢×ÐϸÔĶÁ¿Î±¾¼°ÏàÓ¦½Ì²Ä¡£
2¡¢²ÎÕÕ³ÌÐò¿òͼ±àÖÆÔ´³ÌÐò£¬×¼±¸ºÃ¶à×éÔËËãÊý¾Ý£¬ÒÔ¹©Ð£Ñé¡£
¡¾ÊµÑé²½Öè¡¿
1¡¢È·¶¨Ëã·¨£¬»³ö³ÌÐòÁ÷³Ìͼ¡£ 2¡¢ÀûÓÃÎı¾±à¼³ÌÐò£¬½¨Á¢Ô´Îļþ¡£
3¡¢ÀûÓûã±à³ÌÐòMASM¶ÔÔ´³ÌÐò»ã±à£¬ÐγÉÄ¿±êÎļþ 4¡¢ÀûÓÃLINK¶ÔÄ¿±êÎļþ½øÐÐÁ´½Ó£¬ÐγɿÉÖ´ÐÐÎļþ¡£
5¡¢ÔËÐпÉÖ´ÐÐÎļþ£¬Èç¹ûÓдíÎó£¬ÀûÓÃDEBUGÈí¼þ½øÐе÷ÊÔ
¡¾Ë¼¿¼Ìâ¡¿
1¡¢ÏÖÓÐ(AX)=2000H£¬(BX)=1200H£¬(SI)=0002H£¬(DI)=0003H£¬(DS)=3000H, (SS)=3000H£¬(SP)=00000H£¬(31200H)=50H£¬(31201H)=02H£¬(31202H)=0F7H, (31203H)=90HÇëд³öÏÂÁи÷ÌõÖ¸Áî¶ÀÁ¢Ö´ÐÐÍêºóÓйؼĴæÆ÷¼°´æ´¢µ¥ÔªµØÄÚÈÝ£¬Èô¸ÃÖ¸ÁîÓ°Ïì±êÖ¾¼Ä´æÆ÷£¬Çë¸ø³ö״̬±êÖ¾SF,ZF,OF,CFµÄÖ®Öµ¡£ £¨1£© ADD AX, 1200 £¨2£© SUB AX, BX £¨3£© MOV [BX], AX £¨4£© PUSH AX
£¨5£© DEC BYTE PTR [1200H] £¨6£© NEG WORD PTR [1200H] £¨7£© SAR BYTE PTR 1200[SI]£¬1 £¨8£© ROL BYTE PTR [BX+SI+1]£¬1 £¨9£© MUL WORD PTR [BX][SI] £¨10£© DIV BYTE PTR 1200[DI]
2¡¢Éè¼Ä´æÆ÷AL£¬BL£¬CLÖÐÄÚÈݾùΪ76H£¬ XOR AL£¬0FH AND BL£¬0FH OR CL£¬0FH
Ö´ÐÐÉÏÊöÖ¸ÁîÐòÁкó:
AL=________ BL=________ CL=________
¡¾ÊµÑ鱨¸æÒªÇó¡¿
1¡¢¼Ç¼ʵÑé²½ÖèºÍ³öÏÖµÄÏÖÏ󣬰´ÕÕÒªÇóд³öÏÔʾ½á¹û£¬Ô´³ÌÐò¼ÓÉÏ×¢ÊÍ¡£ 2¡¢±È½ÏʵÑé¼Ç¼ºÍÀíÂÛ·ÖÎöµÄ½á¹ûÊÇ·ñÏàͬ£¬Èç¹û²»Í¬ÕÒ³ö²î±ð²¢·ÖÎöÔÒò¡£ 3¡¢Ð´ÊµÑ鱨¸æ£¬»³öËã·¨Á÷³Ìͼ£¬ÔËÐпÉÖ´ÐÐÎļþ²¢Ð´³öÔËÐнá¹û¡£ 4¡¢»Ø´ð˼¿¼Ì⣬×ܽ᱾´ÎʵÑéÌå»á¡£
24