΢»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ¿ÎºóϰÌâ´ð°¸(¹ùÀ¼Ó¢) ÏÂÔØ±¾ÎÄ

HUGE FLAT ¸ü´óÓ¦ÓóÌÐò£¬¿ÉÓжà¸ö´úÂë¶ÎºÍ¶à¸öÊý¾Ý¶Î£¨¶Ô¾²Ì¬Êý¾ÝûÓÐÏÞÖÆ£© 32λӦÓóÌÐò£¬ÔËÐÐÔÚ32λ80x86CPUºÍWindows 9x»òNT»·¾³ 3.4 ½â£º

¿ªÊ¼Î»ÖãºÓñêºÅÖ¸Ã÷

·µ»ØDOS£ºÀûÓÃDOS¹¦Äܵ÷ÓõÄ4CH×Ó¹¦ÄÜÀ´ÊµÏÖ »ã±àÍ£Ö¹£ºÖ´Ðе½Ò»ÌõENDαָÁîʱ£¬Í£Ö¹»ã±à

3.5 ½â£º

¶Î¶¨Î»¡¢¶Î×éºÏºÍ¶ÎÀàÐÍ¡£

3.6 ½â£º

stack segment stack db 1024(0) stack ends

data segment

string db 'Hello,Assembly£¡'£¬0dH£¬0aH£¬¡®$¡¯ data ends

code segment 'code'

assume cs:code,ds:data,ss:stack start: mov dx,offset string mov ah,9 int 21h code ends

end start

3.7 ½â£º

(1). EXE³ÌÐò

³ÌÐò¿ÉÒÔÓжà¸ö´úÂë¶ÎºÍ¶à¸öÊý¾Ý¶Î£¬³ÌÐò³¤¶È¿ÉÒÔ³¬¹ý64KB ͨ³£Éú³ÉEXE½á¹¹µÄ¿ÉÖ´ÐгÌÐò (2). COM³ÌÐò

Ö»ÓÐÒ»¸öÂß¼­¶Î£¬³ÌÐò³¤¶È²»³¬¹ý64KB

ÐèÒªÂú×ãÒ»¶¨Ìõ¼þ²ÅÄÜÉú³ÉCOM½á¹¹µÄ¿ÉÖ´ÐгÌÐò£¨MASM 6.xÐèÒª²ÉÓÃTINYģʽ£©

3.8 ½â£º

·ûºÅ¶¨ÒåαָÁîÓС°µÈ¼ÛEQU¡±ºÍ¡°µÈºÅ£½¡±£º ·ûºÅÃû EQU ÊýÖµ±í´ïʽ ·ûºÅÃû EQU <×Ö·û´®> ·ûºÅÃû £½ ÊýÖµ±í´ïʽ

EQUÓÃÓÚÊýÖµµÈ¼Ûʱ²»ÄÜÖØ¸´¶¨Òå·ûºÅÃû£¬µ«¡°£½¡±ÔÊÐíÓÐÖØ¸´¸³Öµ¡£ÀýÈ磺 X= 7 £»µÈЧÓÚ£ºX equ 7 X= X+5 £»¡°X EQU X+5¡±ÊÇ´íÎóµÄ

5

41h

3.9 ½â£º

£¨1£© al=67h

£¨2£© ax=133h,dx=4h £¨3£© ax=0230h £¨4£© al=41h £¨4£© ax=7654h

3.10 ½â£º £¨1£© 441145h 46h -1 ? 4 4 4 -1 £¿ 4 4 4 -1 230 0h h h £¨2£© 10h 00h 0fbh 0ffh ? ? ? ? ? 3.11 ½â£º.data

my1b db 'Personal Computer' my2b db 20 my3b db 14h

my4b db 00010100b my5w dw 20 dup(?) my6c = 100

my7c = <'Personal Computer'>

3.12 ½â£º

ÀûÓö¨Î»Î±Ö¸Áî¿ØÖÆ£¬Èçorg,even,align

3.13 ½â£º

°üÀ¨Âß¼­µØÖ·ºÍÀàÐÍÁ½ÖÖÊôÐÔ¡£

3.14 ½â£º £»Êý¾Ý¶Î

org 100h

varw dw 1234h , 5678h varb db 3 , 4 vard dd 12345678h buff dd 10 dup(?) mess db 'Hello' £»´úÂë¶Î

mov ax , offset varb + offset mess

mov ax , type buff + type mess + type vard mov ax , sizeof varw+ sizeof buff+ sizeof mess

£¿ 4 4 4 ? 6

mov ax , lengthof varw+ lengthof vard

3.15 ½â£º

(1) 1000³¬¹ýÒ»¸ö×Ö½ÚËùÄܱí´ïµÄ×î´óÕûÊý £¨2£©SIӦΪżÊý

£¨3£©Á½¸öÄÚ´æµ¥Ôª²»ÄÜÖ±½ÓÔËËã £¨4£©Ó¦¸ÄΪ[al+1]

£¨5£©Ìõ¼þ×ªÒÆÖ¸ÁîºóÃæÓ¦½Ó±êºÅ£¬¶ø²»ÊDZäÁ¿

3.16 ½â£º

3.17 ½â£º

3.18 ½â£º done:

3.19 ½â£º bufX signX next: done:

mov ah,1 £»Ö»ÔÊÐíÊäÈëСд×Öĸint 21h sub al,20h £»×ª»»Îª´óд×Öĸ mov dl,al mov ah,2 int 21h £»ÏÔʾ mov bx,offset LEDtable mov al,lednum xlat mov ax, bufX cmp ax, bufY jae done mov ax, bufY mov bufZ, ax .model small .stack .data dw -7 db ? .code .startup cmp bufX,0 ;test bufX,80h jl next ;jnz next mov signX,0 jmp done mov signX,-1 .exit 0 end

7

3.20 ½â£º

next1:

next2:

3.21 ½â£º

restart:

again:

next:

fun0:

fun1:

fun2:

fun3:

fun4:

fun5:

fun6:

fun7:

mov dl,¡¯2¡¯ mov ax,bufX cmp ax,bufY je next1 dec dl

cmp ax,bufZ je next2 dec dl mov ah,2 int 21h

;´úÂë¶Î

mov al,number mov bx,0 ;BX¡û¼Ç¼Ϊ1µÄλÊý cmp al,0 ;AL£½0½áÊø jz done shr al,1 ;×îµÍλÓÒÒÆ½øÈëCF jc next ;Ϊ1£¬×ªÒÆ inc bx ;²»Îª1£¬¼ÌÐø jmp again push ax push bx shl bx,1 ;λÊý³ËÒÔ2£¨Æ«ÒƵØÖ·ÒªÓÃ2¸ö×Ö½Úµ¥Ôª£©jmp addrs[bx] ;¼ä½Ó×ªÒÆ£ºIP¡û[table£«BX] ;ÒÔÏÂÊǸ÷¸ö´¦Àí³ÌÐò¶Î mov dl,'0' jmp disp mov dl,'1' jmp disp mov dl,'2' jmp disp mov dl,'3' jmp disp mov dl,'4' jmp disp mov dl,'5' jmp disp mov dl,'6' jmp disp mov dl,'7' jmp disp

8