xin微机原�与汇编语言程�设计 - 百度文库

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

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)