µ±Ç°Î»ÖãºÊ×Ò³ > ΢»ú֪ʶµã - ͼÎÄ
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ
²Ù×÷£º(CX)-1¡úCX£»
Èô(CX)¡Ù0,ÔòתÖÁlabel´¦Ö´ÐУ»
·ñÔòÍ˳öÑ»·,Ö´ÐÐLOOPºóÃæµÄÖ¸Áî¡£ LOOPÖ¸ÁîÓëÏÂÃæµÄÖ¸Áî¶ÎµÈ¼Û£º DEC CX JNZ label
3¡¢¹ý³Ìµ÷ÓÃÖ¸Áî £¨1£©µ÷ÓÃÖ¸ÁîCALL
Ò»°ã¸ñʽ£ºCALL sub ;subΪ×Ó³ÌÐòµÄÈë¿Ú
4¡¢ÖжÏÖ¸Áî
(1)INT n Ö´ÐÐÀàÐÍnµÄÖжϷþÎñ³ÌÐò£¬N=0¡«255
Îå¡¢´¦ÀíÆ÷¿ØÖÆÖ¸Áî 1¡¢±ê־λ²Ù×÷ £¨1£©CFÉèÖÃÖ¸Áî
CLC 0¡úCF STC 1¡úCF CMC CF±ä·´ £¨2£©DFÉèÖÃÖ¸Áî
CLD 0¡úDF (´®²Ù×÷µÄÖ¸ÕëÒÆ¶¯·½Ïò´ÓµÍµ½¸ß)
STD 1¡úDF (´®²Ù×÷µÄÖ¸ÕëÒÆ¶¯·½Ïò´Ó¸ßµ½µÍ) £¨3£©IFÉèÖÃÖ¸Áî CLI 0¡úIF (½ûÖ¹INTRÖжÏ) STI 1¡úIF (¿ª·ÅINTRÖжÏ)
2¡¢ HLT£¨halt£©
Ö´ÐÐHLTÖ¸Áîºó£¬CPU½øÈëÔÝͣ״̬¡£
µÚËÄÕ 8086»ã±àÓïÑÔ³ÌÐòÉè¼Æ
µÚÒ»½Ú αָÁî£¨ÖØµã?£©
CPUÖ¸ÁîÓëαָÁîÖ®¼äµÄÇø±ð£º
(1)CPUÖ¸ÁîÊǸøCPUµÄÃüÁÔÚÔËÐÐʱÓÉCPUÖ´ÐУ¬Ã¿ÌõÖ¸Áî¶ÔÓ¦CPUµÄÒ»ÖÖÌØ¶¨µÄ²Ù×÷¡£¶øÎ±Ö¸ÁîÊǸø»ã±à³ÌÐòµÄÃüÁÔÚ»ã±à¹ý³ÌÖÐÓÉ»ã±à³ÌÐò½øÐд¦Àí¡£
(2)»ã±àÒÔºó£¬Ã¿ÌõCPUÖ¸Áî²úÉúÒ»Ò»¶ÔÓ¦µÄÄ¿±ê´úÂ룻¶øÎ±Ö¸ÁîÔò²»²úÉúÓëÖ®ÏàÓ¦µÄÄ¿±ê´úÂë¡£
1¡¢Êý¾Ý¶¨ÒåαָÁî
£¨1£©Êý¾Ý¶¨ÒåαָÁîµÄÒ»°ã¸ñʽΪ£º ?[±äÁ¿Ãû] αָÁî ²Ù×÷Êý[£¬²Ù×÷Êý¡] DB ÓÃÀ´¶¨Òå×Ö½Ú£¨BYTE£©
DW ÓÃÀ´¶¨Òå×Ö£¨WORD£© DD ÓÃÀ´¶¨ÒåË«×Ö£¨DWORD£©
17 / 54
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ
£¨2£©²Ù×÷ÊýµÄÀàÐÍ¿ÉÒÔÊÇ£º ¢Ù³£Êý»ò³£Êý±í´ïʽ
?ÀýÈ磺 DATA_BYTE DB 10,5,10H DATA_WORD DW 100H,100,-4 DATA_DW DD 2*30,0FFFBH ?¿ÉÒÔΪ×Ö·û´®£¨¶¨Òå×Ö·û´®×îºÃʹÓÃDB£© ?ÀýÈ磺char1 DB ?AB? ?¿ÉÒÔΪ±äÁ¿
?¿ÉÒÔΪ£¿ºÅ²Ù×÷·û
ÀýÈ磺X DB 5£¬£¿£¬6
£¿ºÅÖ»ÊÇΪÁ˸ø±äÁ¿±£ÁôÏàÓ¦µÄ´æ´¢µ¥Ôª£¬¶ø²»¸³Óè±äÁ¿Ä³¸öÈ·¶¨µÄ³õÖµ¡£ ?ÖØ¸´´ÎÊý£ºN DUP£¨³õÖµ[£¬³õÖµ¡]£© ?ÀýÈ磺ZERO DB 2 DUP£¨3£¬5£©
XYZ DB 2 DUP£¨0£¬2 DUP£¨1£¬3£©£¬5£©
?ÔÚα²Ù×÷µÄ²Ù×÷Êý×Ö¶ÎÖÐÈôʹÓÃ$,Ôò±íʾµÄÊǵØÖ·¼ÆÊýÆ÷µÄµ±Ç°Öµ¡£
2¡¢²¹³äÄÚÈÝ£º
£¨1£©ÀàÐÍ PTR µØÖ·±í´ïʽÀýÈ磺MOV BYTE PTR [BX]£¬12H
INC BYTE PTR [BX]
×¢Ò⣺µ¥²Ù×÷ÊýÖ¸Áµ±²Ù×÷ÊýΪ»ùÖ·¡¢±äÖ·¡¢»ù+±äµÄʱºò±ØÐ붨Òå
3¡¢·ûºÅ¶¨ÒåαָÁî (1)EQU
¸ñʽ£ºÃû×Ö EQU ±í´ïʽ
EQUαָÁ±í´ïʽµÄÖµ¸³ÓèÒ»¸öÃû×Ö£¬ÒÔºó¿ÉÓÃÕâ¸öÃû×ÖÀ´´úÌæÉÏÊö±í´ïʽ¡£ Àý£ºCONSTANT EQU 100
NEW_PORT EQU PORT_VAL+1
(2) =£¨µÈºÅ£©
ÓëEQUÀàËÆ,µ«ÔÊÐíÖØÐ¶¨Òå Àý£º
©« EMP=7 £»ÖµÎª7 ©« EMP=EMP+1 £»ÖµÎª8
(3)LABEL
LABELαָÁîµÄÓÃ;ÊǶ¨Òå±êºÅ»ò±äÁ¿µÄÀàÐÍ ¸ñʽ£ºÃû×Ö LABEL ÀàÐÍ
±äÁ¿µÄÀàÐÍ¿ÉÒÔÊÇBYTE£¬WORD£¬DWORD¡£±êºÅµÄÀàÐÍ¿ÉÒÔÊÇNEAR»òFAR
4¡¢¶Î¶¨ÒåαָÁî
Óë¶ÎÓйصÄαָÁîÓУº
SEGMENT¡¢ENDS¡¢ASSUME¡¢ORG
18 / 54
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ
£¨1£©¶Î¶¨ÒåαָÁîµÄ¸ñʽÈçÏ£º
¶ÎÃû SEGMENT [¶¨Î»ÀàÐÍ] [×éºÏÀàÐÍ] [¡¯Àà±ð¡¯]
©«
¶ÎÃû ENDS
SEGMENTºÍENDS
ÕâÁ½¸öαָÁî×ÜÊdzɶԳöÏÖ£¬¶þÕßÇ°ÃæµÄ¶ÎÃûÒ»Ö¡£¶þÕßÖ®¼äµÄɾ½Ú²¿·Ö£¬¶ÔÊý¾Ý¶Î¡¢¸½¼Ó¶Î¼°¶ÑÕ»¶Î£¬Ò»°ãÊÇ·ûºÅ¡¢±äÁ¿¶¨ÒåµÈαָÁî¡£¶ÔÓÚ´úÂë¶ÎÔòÊÇÖ¸ÁαָÁî¡£´ËÍ⣬»¹±ØÐëÃ÷È·¶ÎºÍ¶Î¼Ä´æÆ÷µÄ¹ØÏµ£¬Õâ¿ÉÓÉASSUMEÓï¾äÀ´ÊµÏÖ¡£
£¨2£©ASSUME ¸ñʽ£º
ASSUME ¶Î¼Ä´æÆ÷Ãû£º¶ÎÃû[£¬¶Î¼Ä´æÆ÷Ãû£º¶ÎÃû[£¬¡]]
ASSUMEαָÁî¸æËß»ã±à³ÌÐò£¬½«Ä³Ò»¸ö¶Î¼Ä´æÆ÷ÉèÖÃΪijһ¸öÂß¼¶ÎÖ·£¬¼´Ã÷È·Ö¸³öÔ´³ÌÐòÖÐÂß¼¶ÎÓëÎïÀí¶ÎÖ®¼äµÄ¹ØÏµ¡£
£¨3£©ORG
αָÁîORG¹æ¶¨Á˶ÎÄ򵀮ðʼµØÖ·»òÆ«ÒÆµØÖ·£¬Æä¸ñʽΪ£º ORG <±í´ïʽ>
±í´ïʽµÄÖµ¼´Îª¶ÎÄ򵀮ðʼµØÖ·»òÆ«ÒÆµØÖ·£¬´Ó´ËµØÖ·ÆðÁ¬Ðø´æ·Å³ÌÐò»òÊý¾Ý¡£
5¡¢»ã±à³ÌÐòµÄÒ»°ã½á¹¹£¨Öصã?£©£¨¼Çס£© DATA SEGMENT ¡
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA BGN: MOV AX ,DATA MOV DS,AX ¡.
MOV AH,4CH INT 21H CODE ENDS END BGN
µÚÈý½Ú ³ÌÐòÉè¼Æ
1¡¢ ˳Ðò³ÌÐòµÄÉè¼Æ£¨ÂÔ£© 2¡¢ ·ÖÖ§³ÌÐòµÄÉè¼Æ µäÐÍÀýÌ⣺
1 X>0
Y = 0 X=0 -1 X<0
19 / 54
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ
?³ÌÐòΪ£º
MOV AL £¬X CMP AL£¬0 JGE BIG MOV Y£¬-1 JMP EXIT
BIG£ºJE EQUL MOV Y£¬1 JMP EXIT
EQUL£ºMOV Y£¬0 ¶þ½øÖÆÊý(B) EXIT£º¡. °Ë½øÖÆÊý(Q) ÊýÖÆ Ê®Áù½øÖÆÊý(H) 3¡¢ Ñ»·³ÌÐò¼û½²Òå¡£ ?ÓüÆÊý¿ØÖÆÑ»· Ê®½øÖÆÊý(D) ÔÂë B) µÚÒ»Õ ¼ÆËã»ú»ù´¡ÖªÊ¶·´Âë ±¾ÕµÄÖ÷ÒªÄÚÈÝΪ²»Í¬½øÎ»¼ÆÊýÖÆ¼ÆÊý·½·¨¡¢²»Í¬½øÎ»ÖÆÊýÖ®¼äÏ໥ת»»µÄ´ø·ûºÅÊý±àÂë ·½·¨¡¢²¹Âë ¼òµ¥µÄËãÊõÔËËãÒÔ¼°¼ÆËã»úϵͳµÄ×é³É¡£±¾ÊýºÍ×Ö·ûÔÚ¼ÆËã»úÖеıíʾ·½·¨¡¢Ï±߽«±¾ÕµÄ֪ʶµã×÷Á˹éÀ࣬ͼ1Ϊ±¾ÕµÄ֪ʶҪµãͼ£¬Í¼1.2Ϊ¼ÆËã»úϵͳÕÂÆæÐ£ÑéÂë ÂëÖÆ ×é³ÉµÄʾÒâͼ¡£ ÆæÅ¼Ð£ÑéÂë Öª ʶ Òª µã ¼Æ Ëã »ú ϵ ͳ ×é ³É
żУÑéÂë Êý×Ö±àÂë¹æÔò ASCIIÂë ×Ö·û±àÂë BCDÂë ·ÇѹËõBCDÂë ¼ÆËã»úϵͳ×é³É ¿ØÖÆÆ÷ ÖÐÑë´¦ÀíÆ÷(CPU) Ö÷»ú °ëµ¼Ìå´æ´¢Æ÷ Ó²¼þ ÊäÈëÉ豸 ÍⲿÉ豸 Êä³öÉ豸 ²Ù×÷ϵͳ£ºÈçDOS¡¢Windows¡¢Unix¡¢LinuxµÈ ϵͳÈí¼þ Èí¼þ ¸÷ÖÖ¼ÆËã»úÓïÑÔ´¦ÀíÈí¼þ£ºÈç»ã±à¡¢½âÊÍ¡¢±àÒëµÈÈí¼þ ÆäËûϵͳÈí¼þ Óû§Ó¦ÓÃÈí¼þ Ó¦ÓÃÈí¼þ ÆäËûÓ¦ÓÃÈí¼þ 20 / 54 ×Öĸ±àÂë¹æÔò ѹËõBCDÂë ÔËËãÆ÷ ROM RAM
¹²·ÖÏí92ƪÏà¹ØÎĵµ