ret
pchar endp code ends
end main
8. ÒÔ10½øÖÆÐÎʽÏÔʾÄÚ´æÖÐÒ»ÓзûºÅ×Ö½ÚÊý¾Ý
Àý£ºvar
db
0ffH
ÆÁĻӦÏÔʾ£ºThe result is: -1
data segment para
var str1 buf
db 7fh
db 0dh, 0ah, ¡®The result is: ¡¯ db 4 dup(¡® ¡¯) db ¡®$¡¯
data ends
ss_seg segment stack
dw
100 dup(0)
ss_seg ends code segment para
assume cs:code, ds:data, ss:ss_seg main proc far
mov mov mov cmp jge mov neg
ax, data ds, ax buf, ¡®+¡¯ var, 0 next buf, ¡®-¡® var al, var cx, 3 dl, 10
11
;ÅжÏvarÊÇÕýÊý,»¹ÊǸºÊý
;ÈôvarΪ¸º£¬ÔòµÃµ½ÆäÏà·´Êý
next: mov
mov
mov
lea bx, buf+3 ah, 0 dl
; (AX / 10)ÉÌ ? al ; (AX / 10)ÓàÊý? ah
main1: mov
div add mov dec
loop lea mov int mov int
ah, 30h [bx], ah bx main1 dx, str1 ah, 9 21h ax, 4c00h 21h
;Ñ»·3´Î,·Ö±ðµÃµ½°Ù¡¢Ê®¡¢¸öλ ;ÏÔʾ10½øÖÆÊý
exit:
main endp
code ends
end main
9. ½«Ò»¸ö16λµÄÎÞ·ûºÅÊývar, ת»»Îª·ÇѹËõ¸ñʽBCDÂ룬´æ·ÅÔÚÄÚ´æÖÐbuf
¿ªÊ¼µÄµ¥ÔªÖС££¨°´¸ßλÔÚǰ¡¢µÍλÔÚºóµÄ˳Ðò´æ·Å£© data segment para
var buf
dw 800H db 5 dup(0)
data ends
ss_seg segment stack
dw
100 dup(0)
ss_seg ends code segment para
assume cs:code, ds:data, ss:ss_seg main proc far
mov mov
ax, data ds, ax
12
mov cx, 16 main1: shl var, 1
lea
bx, 4
push cx
mov
cx, 5 main2: mov al, buf[bx] adc al, al AAA
mov buf[bx], al dec bx loop main2
pop cx
loop main1
exit: mov ax, 4c00h
int
21h
main endp
code ends
end main
;((0*2 + B15)*2 + B14)*2 + ¡ + )*2 + B0
;µÃµ½varµÄBiλ
;Ö´ÐÐbuf*2 + Bi²Ù×÷
·ÇѹËõ¸ñʽBCDÂëµ÷Õû
;ÄÚÑ»·Îª5´Î
;ÍâÑ»·Îª16´Î
13
Ñ¡×÷Ì⣺
10. ÄÚ´æÖдÓstr¿ªÊ¼´æ·ÅÒ»×Ö·û´®£¬½áÊø·ûΪNULL×Ö·û£¬Çë±àд³ÌÐòͳ¼Æ¸Ã
×Ö·û´®Öе¥´ÊµÄ¸öÊý Àý£ºstr1
db 0dh, 0ah, ¡®Hello world, welcome to DUT. CPU is central
processing unit!¡¯, 0h
ͳ¼Æ¡¯¡.¡¯Öеĵ¥´Ê¸öÊý£¬½á¹ûΪ10
data
segment
para
str1 db 'long long ago, there lived a king, the king asked the artist to ¡¯ db ¡®draw a horse for him ',0
words dw 0
ends
stack
data
ss_seg segment
db 256 dup(?)
ss_seg ends code
segment
assume cs:code,ds:data,ss:ss_seg main
proc push xor push mov mov mov lea mov cld
far ds ax, ax ax
ax, data ds, ax cx, 0
;ÓÃcx´æ·Åµ¥´ÊÊý
si, str1
bl, ' '
;bl×ܱ£´æµ±Ç°×Ö·ûµÄǰһ¸ö×Ö·û
main_3: lodsb
and jz cmp jnz
al, al main_1
al, ' '
;±È½ÏÊÇ·ñÊǿոñ
;ÅжÏalÊÇ·ñΪ½áÊø·û0
main_2
bl, ' '
;±È½Ïǰһ¸ö×Ö·ûÊÇ·ñΪ¿Õ¸ñ£¬²»ÊÇÔò´Ë¿Õ¸ñ ;²»ÄÜËãÒ»¸öµ¥´Ê
14
main_4: cmp
jz cmp
main_5
bl, ','
;±È½Ïǰһ¸ö×Ö·ûÊÇ·ñΪ¶ººÅ£¬Èç¹ûÊÇÔò´Ë¿Õ ;¸ñÒ²²»ÄÜËãÒ»¸öµ¥´Ê
jz inc
main_5 cx
;Ö»Óе±Ç°×Ö·ûΪ' '»ò','¶øÇÒǰһ¸ö×Ö·ûΪÓÐ ;Ч×Ö·ûʱ£¬²Å¶Ôµ¥´ÊÊý¼Ó1
jmp main_5
al, ','
;±È½ÏÊÇ·ñÊÇ','ºÅ
main_2: cmp
jz
main_4
bl, al
;½øÈëÕâÀï±íÃ÷´ËʱalÖÐÄÚÈݲ»ÊÇ0,' ', ','ÈýÖÖ ;·ûºÅ,±£´æalµ½bl
main_5: mov
jmp main_3
bl, ' '
;ÅжϽáÊø·ûÇ°ÃæÊÇ·ñΪµ¥´Ê£¬»¹ÊÇΪһ¸ö' '»ò','
main_1: cmp
jz cmp jz inc
main_6
bl, ','
main_6 cx
;Èô½áÊø·ûǰÊÇÒ»¸öÓÐЧ×Ö·û£¬ÄÇôµ¥´ÊÊýÓ¦¸Ã¼Ó1
main_6: mov
ret endp
words, cx
main
code
ends
main
end
11 ±àд³ÌÐòÓüüÅÌ1~7¼ü£¬Ä£Äâ7¸öÒô·û£¬½øÐмüÅÌÑÝ×࣡
×¢£ºÐèÒª¶Ô8253µÄ¶¨Ê±Æ÷2ºÍ8255µÄPB¿Ú½øÐгõʼ»¯
data
segment
para
Table_L dw 131,147,165,175,196,220,247,262 ;µÍÒô1-7µÄƵÂÊ Table_M dw 262,294,330,349,392,440,494,523 ;¸ßÒô1-7µÄƵÂÊ shift_1 equ 21h shift_2 equ 40h shift_3 equ 23h shift_4 equ 24h shift_5 equ 25h shift_6 equ 5Eh shift_7 equ 26h
15
Ïà¹ØÍÆ¼ö£º