際際滷

際際滷Share a Scribd company logo
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
H畛i / 叩p H畛p ng畛 8086
C但u h畛i
Ch動董ng 3
C但u 1) Nh畛ng l畛nh MOV no sau 但y sai ? T畉i sao ?
Cho: var-1 DW 0
var-2 DW 6
var-3 DB 5
a> MOV AX, BX
b> MOV var -2, AL
c> MOV AX, BL
d> MOV BH, 4A6Fh
e> MOV DX, 3
f> MOV var-1, BX
g> MOV CL, var-3
h>MOV CS, 0
i> MOV IP, AX
j> MOV WORD PTR var-3, 10
k>MOV var-1, var-2
l>MOV DS, 1000
m>MOV DS, CS
C但u 2) Vi畉t 畛nh ngh挑a d畛 li畛u cho chu畛i sau MY FILE.DTA
C但u 3) Vi畉t 1 ph叩t bi畛u 畛nh ngh挑a d畛 li畛u cho 1 danh s叩ch g畛m 8 bit nh畛 l動u tr畛 c叩c gi叩 tr畛 sau
3, 15h, 0F6h, 11010000b
C但u 4) Vi畉t khai b叩o d畛 li畛u tr畛c ti畉p cho 500 WORD li棚n t畛c m畛i WORD ch畛a gi叩 tr畛 1000h
C但u 5) i畛n vo 担 tr畛ng: 1 to叩n h畉ng c坦 th畛 l 1 bi畉n, 1 thanh ghi, hay ______
C但u 6)Thanh ghi no sau 但y kh担ng 動畛c s畛 d畛ng nh動 l 1 to叩n h畉ng k畉t qu畉 :
AX, CL, IP, DX, CS, BH, SS, SP, BP
C但u 7)Gi叩 tr畛 HEX c畛a to叩n t畛 k畉t qu畉 s畉 l g狸 sau m畛i l畛nh MOV ? (N畉u l畛nh MOV sai th狸 vi畉t sai
thay cho c但u tr畉 l畛i)
a>MOV AX, BX AX=0023 BX =00A5
AX=
b> MOV AH, 3 AX = 06AF
AX=
c>MOV DL, count DX=8F23 count =1A
DL=
d>MOV BL, AX BX=00A5 AX=4000
BL=
e> MOV DI, 100h DI=06E9
DI=
f>MOV DS, CX DS=0FFB2 CX=0020
DS=
g>MOV var-1, A000
h> MOV count, AX count =25 AX= 4000
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
count=
i> MOV var-1, var-2 var-1=400h var-2= 0500h
var-1=
C但u 8)Gi叩 tr畛 HEX c畛a to叩n t畛 k畉t qu畉 s畉 l g狸 sau khi c但u l畛nh 動畛c th畛c thi?(var1 WORD, var2
BYTE, count BYTE)(n畉u c但u l畛nh sai th狸 ghi sai )
a>MOV AH, BL AX=0023 BX=00A5
AX=
b> ADD AH, 3 AX =06AF
AX=
c> SUB DL, count DX= 8F23 count= 1A
DX=
d>INC BL BX=FFFF
BX=
e> ADD DI, 100h DI=06E9
DI=
f> DEC CX CX=0000
CX=
g) ADD var1, BX var1 =0025 BX=A000
var1=
h> XCHG var2, AL var2= 25 AL=41
var2=
i>SUB var 1, var2 var1=15A6 var2=38
var1=
j> DEC var 2 var2=01
var2=
C但u 9) Vi畉t 畛nh ngh挑a cho bi畉n ArrayPtr bao g畛m 畛a ch畛 offset c畛a bi畉n IntArray
C但u 10) AX s畉 b畉ng bao nhi棚u sau khi th畛c hi畛n nh畛ng c但u l畛nh sau.
MOV AX, Array1
INC AX
ADD AH, 1
SUB AX, Array1


...
Array1 DW 10h, 20h
Array2 DW 30h, 40h
C但u 11) Khi th畛c hi畛n c但u l畛nh sau, h達y i畛n gi叩 tr畛 HEX th鱈ch h畛p vo ch畛 tr畛ng
MOV AX, Array1 ;a> AX=
XCHG Array2, AX ;b> AX=
DEC AX ;
SUB Array2, 2 ;c> Array2=
MOV BX, Array2 ;d> AX=
ADD AH, BL ;e> AX=
.
.
.
Array1 DW 20h, 10h
Array2 DW 30h, 40h
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
Ch動董ng 6
C但u 1: C坦 ph畉i l畛nh LOOP s畉 d畛ng khi ZF 動畛c b畉t kh担ng?
C但u 2: H達y cho bi畉t t棚n c畛a 1 l畛nh chuy畛n i畛u khi畛n kh担ng i畛u ki畛n v i畛u khi畛n?
C但u 3: 3 to叩n h畉ng c董 b畉n l thanh ghi, b畛 nh畛 v _______
.
C但u 4: 畛a ch畛 c畛a nh坦m to叩n h畉ng li棚n quan 畉n i畛m b畉t 畉u c畛a ch動董ng tr狸nh 畉t 畛 th畛i gian h畛p
hay 畛 th畛i gian li棚n k畉t?
C但u 5: Trong m達 m叩y t畛 1 file danh s叩ch, R n坦i l棚n i畛u g狸?
SB 0021 R ADD BX, val1
C但u 6: Thanh ghi no 動畛c g畛i l thanh ghi n畛n.
C但u 7: Nh畉n bi畉t ki畛u to叩n h畉ng(thanh ghi, to叩n h畉ng t畛c th畛i, 畛a ch畛 tr畛c ti畉p, 畛a ch畛 gi叩n ti畉p)
動畛c s畛 d畛ng trong c叩c c但u l畛nh sau:
a) MOV AL, 20
b) ADD CX, WORD PTR val
c) MOV BX, offset count
d) ADD DL, [BX]
C但u 8: T畉i sao l畉i s畛 d畛ng to叩n t畛 PTR trong c但u l畛nh sau:
ADD WORD PTR[SI], 5
C但u 9: S畛 d畛ng to叩n t畛 PTR trong tr動畛ng h畛p no sau 但y:
a) MOV AL, bval
b) MOV DL, [BX]
c) SUB [BX], 2
d) MOV CL, Wval
e) ADD AL, Bval + 1

Bval DB 10h, 20h
Wval DW 1000h
C但u 10: BList DB 1, 2, 3, 4, 5
Wlist DW 6, 7, 8, 9, 0AH
H達y s畛a l畛i sai n畉u c坦 trong c叩c c但u l畛nh sau
a) MOV AL, BList
b) ADD AL, Wlist+1
c) MOV BX, offset BList
d) MOV DL, [BL]
e) ADD [BX], BYTE PTR 2
f) MOV CX, Wlist
g) MOV DX, CX
h) INC WORD PTR DX
i) DEC AX
j) INC [CX]
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
C但u 11: Ch動董ng tr狸nh sau t鱈nh t畛ng c畛a 1 danh s叩ch 10 s畛 v 動a k畉t qu畉 vo TOTAL. H達y s畛a l畛i
sai c炭 ph叩p v s畛a l畛i sai lu畉n l箪, gi畉i th鱈ch v 動a ra gi畉i ph叩p d炭ng:
1: Begin:
2: MOV CX, 10
3: MOV SI, offset Bytelist
4: NextByte:
5: ADD DX, [SI]
6: INC DX
7: LOOP Begin
8: MOV TOTAL, DX
9: .DATA
10: Bytelist DB 56, 22, 30, 40, 76, 82, 10, 44, 23
11: TOTAL DW 10
Ch動董ng 7
C但u 1) Gi畉i th鱈ch s畛 kh叩c bi畛t gi畛a l畛nh JMP v JZ
C但u 2) L畛ai c畛 no c畛a CPU 動畛c d湛ng 畛 so s叩nh kh担ng d畉u?
C但u 3) Lo畉i c畛 no c畛a CPU 動畛c d湛ng 畛 so s叩nh c坦 d畉u?
C但u 4) L畛nh nh畉y c坦 i畛u ki畛n n叩o d畛a vo n畛i dung c畛a thanh ghi t畛ng qu叩t?
C但u 5) Gi畉i th鱈ch s畛 kh叩c nhau c畛a 2 l畛nh JA v JNBE
C但u 6) Gi畉i th鱈ch s畛 kh叩c nhau c畛a l畛nh JB v JL
C但u 7) C坦 ph畉i l畛nh nh畉y c坦 i畛u ki畛n nh畉y 畉n b畉t k狸 nh達n no trong c湛ng segment kh担ng?
C但u 8) L畛nh JB 動畛c th畛c thi, v畉y c畛 no 動畛c b畉t?
C但u 9) L畛nh CMP so s叩nh 2 to叩n h畉ng v畛a 動畛c th畛c thi xong, v畉y trong c叩c l畛nh nh畉y c坦 k sau,
l畛nh no 動畛c th畛c thi:
OF SF ZF CF
a) JNZ 0 0 1 0
b) JA 1 0 1 0
c) JNB 1 0 1 0
d) JBE 0 0 1 0
e) JGE 1 1 0 0
f) JNLE 0 1 0 1
g) JNS 0 0 1 0
h) JNG 1 1 0 1
i) JE 1 0 1 0
j) JNAE 1 0 1 0
C但u 10) Sau khi th畛c thi ch動董ng tr狸nh sau, gi叩 tr畛 c畛a AL v BL l bao nhi棚u?
MOV AL, val1
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
MOV BL, val2
AND AX, 0FB6h
CMP AL, BL
JA label1
MOV AL, BL
JMP exit
label1:
MOV BL, AL
exit:
val1 DB 6BH
val2 DB 3Fh
C但u 11) Sau khi ch動董ng tr狸nh sau 動畛c th畛c thi, gi叩 tr畛 c畛a AL, BL l bao nhi棚u?
MOV AL, val2
MOV BL, val1
OR BL, 0Fh
SUB AL, BL
JB Label1
MOV AL, 1
JMP exit
Label1:
MOV BL, 1
exit:
val1DB 6BH
val2 DB 3Fh
C但u 12) Sau khi ch動董ng tr狸nh th畛c thi, gi叩 tr畛 c畛a AL v BL l bao nhi棚u?
MOV AL, val2
MOV BL, val1
XOR BL, 0FFh
TEST AL, 3
JZ Label1
MOV AL, 1
JMP exit
Label1:
MOV BL, 1
exit:
val1 DB 35h
val2 DB 3Fh
C但u 13) Sau khi ch動董ng trinh sau 動畛c th畛c thi th狸 gi叩 tr畛 c畛a CX, DX v SI l bao nhi棚u?
MOV SI, 0
MOV CX, val1
MOV DX, val2
AND CX, 0FFh
NOT DX
XCHG DX, val1
again:
INC SI
DEC DX
LOOP again
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
val1 DW 026AH
val2 DW 3FD9h
C但u 14) Sau khi th畛c thi ch動董ng tr狸nh, gi叩 tr畛 c畛a CX, DX, SI v val2 l bao nhi棚u?
MOV SI, offset val1
MOV CX, [SI]
ADD SI, 2
MOV DX, [SI]
XCHG DX, val1
AND DX, 0FF00h
again:
DEC WORD PTR[SI]
DEC DX
CMP DX, 01FFh
LOOPZ again
val1 DW 026AH
val2 DW 3F09h
Ch動董ng 8
C但u 1) th畉o lu畉n nh畛ng c叩ch m ph辿p c畛ng th畉p ph但n c坦 th畛 th畛c hi畛n cho 2 s畛 th畉p ph但n ASCII
sau: 2, 1234 v 300, 5.
C但u 2) H達y cho bi畉t 2 ng担n ng畛 c畉p cao th担ng d畛ng m c坦 ch畛a l畛nh shift
C但u 3) B畉n c坦 bi畉t ng担n ng畛 c畉p cao no c坦 l畛nh quay kh担ng?
C但u 4) Hai c但u l畛nh no chuy畛n nh坦m b鱈t trong m畛t to叩n h畉ng v畛 b棚n tr叩i v copy bit cao nh畉t trong
CF vo v畛 tr鱈 b鱈t th畉p nh畉t ?
C但u 5) L畛nh no chuy畛n m畛t nh坦m bit sang b棚n ph畉i copy bit th畉p vo trong CF v copy CF vo
v畛 tr鱈 b鱈t cao?
C畉u 6) L畛nh no chuy畛n m畛t nh坦m b鱈t sang b棚n ph畉i v sau 坦 2 bit cao nh畉t c畛a n坦 gi畛ng nhau?
C但u 7) L畛nh no chuy畛n 1 nh坦m b鱈t sang b棚n tr叩i copy CF vo v畛 tr鱈 b鱈t th畉p v copy b鱈t cao nh畉t
vo CF?
C但u 8) Nh坦m l畛nh no s畉 th畛c thi nhanh h董n:
Nh坦m 1: MOV CL, 2
SHL AL, CL
Nh坦m 2: SHL AL, 1
SHL AL, 1
C但u 9) Chuy畛n g狸 s畉 x畉y ra v畛i n畛i dung c畛a CF khi l畛nh SHR th畛c thi ?
C但u 10) 畛 nh但n 1 s畛 v畛i 16 ta ph畉i d畛ch tr叩i bao nhi棚u l畉n ?
C但u 11) Vi畉t 2 c但u l畛nh chia BX cho 4, s畛 d畛ng l畛nh shift?
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
C但u 12) Vi畉t 1 o畉n l畛nh 畛 nh但n AL cho l2(d湛ng l畛nh shift)? i畛u ki畛n gi叩 tr畛 AL l炭c 畉u nh但n v畛i
12 cho k畉t qu畉 l 8 bit
C但u 13) Sau khi ch動董ng tr狸nh th畛c thi, gi叩 tr畛 c畛a AL b畉ng bao nhi棚u?
(Cho AL=EAh, CL=2, CF=0)
SHL AL, 1
SHL AL, CL
SHR AL, 1
SAR AL, 1
ROL AL, 1
ROL AL, CL
ROR AL, 1
RCL AL, 1
RCR AL, 1
RCR AL, CL
C但u 14) Vi畉t 2 c但u l畛nh ho叩n 畛i n畛i dung c畛a 4 b鱈t tr叩i v 4 b鱈t ph畉i c畛a thanh ghi DL?
(V鱈 d畛 :DL=A9h -> DL=9AH)
C但u 15) Vi畉t 1 c但u l畛nh d畛ch 1 b鱈t cao nh畉t c畛a thanh ghi DL sang b鱈t th畉p nh畉t c畛a thanh ghi DH
C但u 16) Sau khi ch動董ng tr狸nh th畛c thi n畛i dung c畛a DX l bao nhi棚u ?
MOV DX, 5
STC
MOV AX, 10h
ADC DX, AX
C但u 17) Cho o畉n ch動董ng tr狸nh sau, c坦 bao nh畛棚u l畛i?
MOV CX, 8
MOV SI, val1
MOV DI, val2
CLC
Top:
MOV AL, BYTE PTR[SI]
SHL AL, BYTE PTR[DI]
MOV BYTE PTR[SI], AL
DEC SI
DEC DI
LOOP Top
val1 DQ 2040300436204A1h
val2 DQ 055210304A2630B2h
result DQ 0
C但u 18) Sau khi ch動董ng tr狸nh 動畛c th畛c thi gi叩 tr畛 c畛a AX l bao nhi棚u?
MOV AX, 22h
MOV CL, 2
MUL CL
C但u 19) Sau khi ch動董ng tr狸nh th畛c thi gi叩 tr畛 c畛a AX, DX l bao nhi棚u?
MOV DX, 0
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
MOV AX, 222h
MOV CX, 100h
MUL CX
C但u 20) Sau khi ch動董ng tr狸nh th畛c thi gi叩 tri c畛a AX l bao nhi棚u?
MOV AL, 63h
MOV BL, 10h
DIV BL
C但u 21) Sau khi ch動董ng tr狸nh th畛c thi gi叩 tr畛 c畛a AX, DX l bao nhi棚u?
MOV AX, 1234
MOV DX, 0
MOV BX, 10h
DIV BX
C但u 22) Sau khi ch動董ng tr狸nh th畛c thi gi叩 tr畛 c畛a AX, DX l bao nhi棚u?
MOV AX, 4000h
MOV DX, 500h
MOV BX, 10h
DIV BX
C但u 23) Vi畉t l畛nh nh但n (-5) v畛i 3 l動u vo bi畉n val1 16bit?
C但u 24) Vi畉t l畛nh chia (-276) cho 10 v l動u k畉t qu畉 vo bi畉n val1 16bit
C但u 25) Vi畉t ch動董ng tr狸nh chia 20000000h cho 10h v l動u tr畛 k畉t qu畉 vo result_hi v result_lo.
G畛i 箪: ph畉i d湛ng chia 32 bit 畛 tr叩nh trn.
Ch動董ng 9
C但u 1) H達y n坦i i畛m kh叩c nhau gi畛a ASCII th畉p ph但n v s畛 nh畛 ph但n.
C但u 2) N畉u l動u tr畛 s畛 4096 d畉ng ASCII th畉p ph但n trong b畛 nh畛. N畛i dung c畛a BYTE ny 畛 d畉ng
HEX s畉 l g狸 ?
C但u 3) Thanh ghi no 動畛c d湛ng trong l畛nh XLAT 畛 ch畛a Ch畛 s畛 c畛a b畉ng tra
C但u 4) L畛nh XLAT c坦 th畛 d湛ng trong tr動畛ng h畛p m畛i ph畉n t畛 c畛a b畉ng l 16 bit hay kh担ng
C但u 5) N畉u nh動 t棚n c畛a b畉ng 動畛c d湛ng nh動 1 to叩n h畉ng.L畛nh XLAT d湛ng t棚n ny hay d湛ng thanh
ghi BX
C但u 6) Nh畛ng c畛 no s畉 ch畛u t叩c 畛ng sau l畛nh XLAT
C但u 7) CHo 畛an Ch動董ng tr狸nh sau
MOV BX, offset Chars
MOV AL, 6
XLAT
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM



Chars DB ABCDEFGHIJ
Sau khi ch動董ng tr狸nh 動畛c th畛c thi, gi叩 tr畛 c畛a thanh ghi AL s畉 l bao nhi棚u
C但u 8) Sau khi khi ch動董ng tr狸nh th畛c thi, gi叩 tr畛 thanh ghi AL l bao nhi棚u?
(bi畉t PTR1 畉t 畛 v畛 tr鱈 0106h)
MOV BX, PTR2
MOV AL, BYTE PTR PTR3 + 1
XLAT
Table DB 1234567890
PTR1 DW PTR2
PTR2 DW Table
PTR3 DW PTR1
C但u 9) Thi畉t k畉 m畛t b畉ng m c坦 th畛 s畛 d畛ng b畛i l畛nh XLAT 畛 chuy畛n nh畛ng k箪 t畛 th動畛ng thnh
nh畛ng k箪 t畛 hoa.
C但u 10)H達y tr狸nh by thu畉t to叩n ny 畛 chuy畛n t畛 nh畛 ph但n sang ASCII th畉p ph但n (v鱈 d畛: s畛 302h)
C但u 11)H達y tr狸nh by thu畉t to叩n chuy畛n t畛 gi叩 tr畛 ASCII th畉p ph但n sang nh畛 ph但n
V鱈 d畛 chuy畛n s畛 8196
C但u 12) Tr狸nh by nh動 th畉 no 畛 chuy畛n s畛 ASCII th畉p l畛c ph但n 3F62 thnh nh畛 ph但n
C但u 13) Nh動 tr棚n, ch炭ng ta ch畛 c坦 th畛 chuy畛n s畛 16 bit nh畛 ph但n sang ASCII th畉p ph但n. N畉u ch炭ng
ta mu畛n chuy畛n s畛 32 bit 00011000h sang ASCII, ch畉ng h畉n, ch炭ng ta c坦 th畛 hi畛u ch畛nh ch炭ng.
B畉n c坦 th畛 ngh挑 ra c叩ch 畛 chia 担i s畛 tr棚n v chuy畛n thnh m畛t nh坦m n畛a c叩i kh担ng?
C但u 14) o畉n ch動董ng tr狸nh sau l畉y nh坦m k箪 t畛 t畛 Inputlist, ki畛m tra trong validchars. N畉u AL != 0
th狸 in ra k箪 t畛. H達y t狸m v s畛a l畛i
MOV BX, validchars
MOV DI, offset Inputlist
Getchar:
MOV AL, [SI]
XLAT validchars
OR AL, AL
JZ Getchar
INT 21h
LOOP Getchar



Inputlist DB 5, 26, 45, 96, 88, 128
validchars DB 32 DUP(0)
DB 96 DUP(0FFh)
DB 128 DUP(0)
C但u 15) o畉n ch動董ng tr狸nh sau vi畉t th動 m畛c WRINT.
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
H達y gi畉i th鱈ch c叩c d嘆ng l畛nh 1, 4, 6, 8, 10, 11
1: MOV CX, 0
2: MOV DI, offset Buffer +6
3: MOV BX, 10
L1:
4: MOV DX, 0
5: DIV BX
6: OR DL, 30h
7: DEC DI
8: MOV [DI], DL
9: INC CX
10: OR AX, AX
11: JNZ L1
Buffer DB 6 DUP( )
C但u 16) Trong ch動董ng tr狸nh tr棚n, n畉u AX ch畛a gi叩 tr畛 0600h khi b畉t 畉u, gi叩 tr畛 c畛a DX l bao
nhi棚u trong m畛i v嘆ng l畉p
Ch動董ng 10
C但u 1)
C但u 2) H達y cho bi畉t t棚n 鱈t nh畉t 3 chu畛i trong tr狸nh bi棚n so畉n m c坦 th畛 d畛 hi畛n th畛c trong ng担n ng畛
assembly.
C但u 3) Ng担n ng畛 COBOL xem 1 chu畛i nh動 m畛t d達y k箪 t畛 c坦 chi畛u di c畛 畛nh hay m畛t tr動畛ng k箪
t畛. Chuy畛n g狸 s畉 x畉y ra n畉u ta ch辿p m畛t chu畛i di h董n sang m畛t chu畛i ng畉n h董n.
C但u 4) Chuy畛n g狸 s畉 x畉y ra v畛i chu畛i trong Turbo Pascal khi 畛 di c畛a BYTE bi畛u di畛n 動畛c 畉t
gi叩 tr畛 l 0?
C但u 5) L畛nh STRCOPY kh担ng ki畛m tra chu畛i 鱈ch c坦 畛 r畛ng 畛 ch畛a chu畛i ngu畛n kh担ng? o畉n
m達 thay 畛i STRCOPY 畛 ngn vi畛c l動u tr畛 v動畛t qu叩 畛 r畛ng c畛a chu畛i 鱈ch.
C但u 6) o畉n ch動董ng tr狸nh sau, 1 danh s叩ch 16 bit nguy棚n 動畛c ch辿p t畛 sourcew 畉n destw. L畛nh
l畉p no n棚n 動畛c s畛 d畛ng: REP, REPZ, REPNZ:
CLD
MOV CX, count
MOV SI, offset sourcew
MOV DI, offset destw
MOVSW
C但u 7) S畛 d畛ng ch動董ng tr狸nh debug 畛 ch畉y v ki畛m tra 2 v鱈 d畛 sau. Bao nhi棚u BYTE 動畛c n畉p
vo thanh ghi AL m畛i l畉n
Vd1:
MOV CX, 0
MOV SI, offset source
LODSB
Vd2:
MOV CX, 0
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
MOV SI, offset source
REP LODSB
C但u 8) Sau khi Ch動董ng tr狸nh th畛c thi, gi叩 tr畛 c畛a DI l bao nhi棚u (dest b畉t 畉u t畉i v畛 tr鱈 0006h)
CLD
MOV AL, A
MOV DI, offset dest
MOV CX, 9
REPNZ SCASB
dest DB XXXXAXXX
C但u 9) Trong v鱈 d畛 sau, ch炭ng ta c畉n so s叩nh 2 d達y nguy棚n. T畉i v畛 tr鱈 c坦 2 d達y kh叩c nhau, ta DI
chuy畛n thnh ph畉n th畉p nh畉t c畛a d達y vo AX. H達y t狸m v s畛a l畛i:
CLD
LEA SI, list01
LEA DI, list02
MOV CX, 4
REPE CMPSW
JL L1
DEC SI
MOV AX, [SI]
JMP L2
L1:
SUB DI, 2
MOV AX, [DI]
L2:
RET



List01 DW-1.2, -4.20
List02 DW-1.2, 3.20
C但u 10) V鱈 d畛 sau qu辿t 1 chu畛i theo k箪 t畛 ng動畛c v t狸m k箪 t畛 @. H達y t狸m v s畛a l畛i.
Lookforit:
STD
MOV DL, @
MOV DI, bigstring
REPZ SCASB
DEC DI
bigstring DB JOISD6H37DN398CX@98DF876743
biglen DW $-bigstring
Tr畉 l畛i
Ch動董ng 3
C但u 1) a> 炭ng
b> Sai v狸 kh担ng bi畉t 動畛c var2 l 16 bit hay 8 bit, c嘆n t湛y thu畛c vo d嘆ng 畛ng ngh挑a var-2.
c> Sai v狸 kh担ng h畛p ki畛u ( AX :16bit, BL: 8bit)
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
d> Sai v狸 kh担ng h畛p ki畛u (BH:8 bit)
e> 炭ng
f> 炭ng
g> 炭ng
h>Sai v狸 kh担ng th畛 thay 畛i n畛i dung c畛a CS
i> Sai v狸 kh担ng th畛 thay 畛i thanh ghi IP
j> Sai v狸 trn qua BYTE n畉m sau 畛a ch畛 c畛a var-3
k> Sai v狸 hai to叩n h畉ng kh担ng th畛 畛ng th畛i l b畛 nh畛
l>Sai v狸 kh担ng th畛 ghi th畉ng gi叩 tr畛 t畛c th畛i vo thanh ghi o畉n
m> Sai v狸 kh担ng 動畛c ph辿p ghi t畛 thanh ghi o畉n 畉n thanh ghi o畉n
C但u 2) Gi畉i : filename DB MY FILE.DTA
C但u 3) Gi畉i : DB 3, 15h, 0F6h, 11010000b
C但u 4) Gi畉i: DW 500 DUP(1000h)
C但u 5) Gi畉i:1 to叩n h畉ng t畛c th畛i
C但u 6) Gi畉i: IP, CS
C但u 7)
a> Gi畉i : AX= 00A5
b> Gi畉i : AX =03AF
c> Gi畉i : DL=1A
d> Gi畉i: sai
e> Gi畉i: DI=0100h
f> Gi畉i: DS= 0020
g> Gi畉i: kh担ng bi畉t 動畛c
h> Gi畉i: sai
i> Gi畉i : sai
C但u 8)
a> Gi畉i: AX= A523
b> Gi畉i : AX=09AF
c> Gi畉i: DX=8F09
d> Gi畉i: BX=FF00
e> Gi畉i: DI=07E9
f> Gi畉i: CX= FFFF
g> Gi畉i : var1=A025
h> Gi畉i : var2=41
i> Gi畉i: sai
j> Gi畉i: var2= 0
C但u 9) Gi畉i: ArrayPtr DW IntArray
C但u 10) Gi畉i: AX= 0101h
C但u 11)
a> AX=0020
b> AX=0030
c> Array2=001E
d> AX=002F
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
e> AX=1E2F
Ch動董ng 6
C但u 1) Gi畉i: L畛nh LOOP ch畛 d畛ng khi CX=0.
C但u 2) Gi畉i: L畛nh JMP
C但u 3) Gi畉i: gi叩 tr畛 t畛c th畛i
.
C但u 4) Gi畉i: 畛 th畛i gian li棚n k畉t
C但u 5) Gi畉i: C但u l畛nh ny ch畛a 畛ng 1 to叩n h畉ng 動畛c 畛nh v畛 l畉i.
C但u 6) Gi畉i: Thanh ghi BX v BP
C但u 7) Gi畉i:
a) Thanh ghi, to叩n h畉ng t畛c th畛i
b) Thanh ghi, 畛a ch畛 tr畛c ti畉p.
c) Thanh ghi, 畛a ch畛 tr畛c ti畉p
d) Thanh ghi, 畛a ch畛 gi叩n ti畉p
C但u 8) Gi畉i: V狸 s畛 d畛ng to叩n h畉ng t畛c th畛i s畉 g但y ra s畛 nh畉p nh畉ng, c坦 th畛 xem to叩n h畉ng t畛c th畛i
l 8 bit hay 16 bit. To叩n h畉ng 鱈ch [SI] c滴ng kh担ng n坦i l棚n k鱈ch c畛 c畛 th畛 c畛a 担 nh畛 l 8 bit hay 16
bit
C但u 9) Gi畉i:
a) kh担ng s畛 d畛ng
b) kh担ng s畛 d畛ng
c) SUB BYTE PTR[BX], 2
d) MOV CL, BYTE PTR Wval
e) kh担ng s畛 d畛ng
C但u 10) Gi畉i:
a) MOV AL, BList
b) ADD AX, Wlist + 1
c) MOV BX, offset BList
d) MOV DL, [BX]
e) ADD BYTE PTR[BX], 2
f) MOV CX, Wlist
g) MOV DX, CX
h) DX( kh担ng c坦 l畛nh WORD PTR DX)
i) DEC AX
j) INC CX( kh担ng c坦 l畛nh tng tr畛c ti畉p 担 nh畛)
C但u 11) Gi畉i:
Sai l畛i c炭 ph叩p: D嘆ng 5: DX: 16 bit, [SI]: 8 bit
Sai l畛i lu畉n l箪:
a) Ch動a x坦a n畛i dung c畛a DX khi v畛a b畉t 畉u ch動董ng tr狸nh
b) Ph辿p t鱈nh t畛ng tr棚n kh担ng thay d畛i SI n棚n l t鱈nh t畛ng 10 l畉n gi叩 tr畛 s畛 56
c) Ph辿p t鱈nh t畛ng tr棚n s畉 l畉p l畉i v担 t畉n v gi叩 tr畛 c畛a CX kh担ng bao gi畛 = 0.
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
d) Ch動a x辿t tr動畛ng h畛p t鱈nh t畛ng v b畛 trn
e) .
Ch動董ng tr狸nh 炭ng l:
Begin:
MOV CX, 10
MOV SI, offset Bytelist
XOR DX, DX
Next BYTE
ADD DL, [SI]
ADC DH, 0 ;TH b畛 trn
;DH DH+ CF+0
INC SI
LOOP NextByte
MOV TOTAL, DX
.DATA
Bytelist DB 56, 22, 30, 40, 76, 82, 10, 5, 44, 23
TOTAL DW 0
C叩ch kh叩c:
Begin:
MOV CX, 10
MOV SI, offset Bytelist
XOR DX, DX
XOR AX, AX
Nextbyte:
MOV AL, [SI]
ADD DX, AX
INC SI
LOOP NextByte
MOV TOTAL, DX
.DATA
Bytelist DB 56, 22, 30, 40, 76, 82, 10, 5, 44, 23
TOTAL DW 0
Ch動董ng 7
C但u 1) Gi畉i: L畛nh JMP l l畛nh nh畉y kh担ng i畛u ki畛n, l畛nh ny lu担n 動畛c th畛c hi畛n. L畛nh JZ l l畛nh
nh畉y c坦 i畛u ki畛n, l畛nh ny ch畛 動畛c th畛c hi畛n khi c畛 ZF 動畛c b畉t
C但u 2) Gi畉i: CF v ZF
C但u 3) Gi畉i: ZF, SF, OF
C但u 4) Gi畉i: JCXZ
C但u 5) Gi畉i: 2 l畛nh ny ch畛 kh叩c nhau c叩ch vi畉t, s畛 th畛c thi c畛a 2 l畛nh ny l gi畛ng nhau
C但u 6) Gi畉i: JB d湛ng trong tr動畛ng h畛p so s叩nh kh担ng d畉u, JL d湛ng trong tr動畛ng h畛p so s叩nh c坦
d畉u.
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
C但u 7) Gi畉i: kh担ng, ph畉i.d湛ng l畛nh short jump ch畛 畛 nh畉y trong kho畉ng -128 畉n 127 BYTE so
v畛i v畛 tr鱈 hi畛n hnh
C但u 8) Gi畉i: CF
C但u 9) Gi畉i:
a) kh担ng nh畉y
b) kh担ng nh畉y
c) nh畉y
d) nh畉y
e) nh畉y
f) kh担ng nh畉y
g) nh畉y
h) kh担ng nh畉y
i) nh畉y
j) nh畉y
C但u 10) Gi畉i: AL=3F, BL=3F
C但u 11) Gi畉i: AL=D0h, BL=1h
C但u 12) Gi畉i: AL=1h, BL=CAh
C但u 13) Gi畉i: CX=0, DX=0200h, SI=006A
C但u 14) Gi畉i: CX=0269, DX=01FF, SI=??, val2=3F08h
Ch動董ng 8
C但u 1)
C但u 2) Gi畉i: C v PascAL
C但u 3) Gi畉i:
C但u 4) Gi畉i: ROL
C但u 5) Gi畉i: RCR
C畉u 6) Gi畉i: SAR
C但u 7) Gi畉i: RCL
C但u 8) Gi畉i: Nh坦m 2
C但u 9) Gi畉i: b鱈t t畉i v畛 tr鱈 0 cua thanh ghi ang th畛c hi畛n l畛nh d畛ch 動畛c 動a vo CF
C但u 10) Gi畉i: B畛n l畉n
C但u 11) Gi畉i: SHR BX, 1
SHR BX, 1
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
C但u 12) Gi畉i: 2 c叩ch
C叩ch 1: b畛 k畉t qu畉 vo AL
PUSH AX
SHL AL, 1
SHL AL, 1
SHL AL, 1
MOV DL, AL
POP AX
SHL AL, 1
SHL AL, 1
ADD AL, DL
C叩ch 2: b畛 k畉t qu畉 vo AL
MOV DL, AL
SHL DL, 1
SHL DL, 1
SHL DL, 1
SHL AL, 1
SHL AL, 1
ADD DL, AL
C但u 13) Gi畉i: AL=14h
C但u 14) Gi畉i: MOV CL, 4
ROR AL, CL ;hay ROL DL, CL
C但u 15) Gi畉i: SHL DX, 1
C但u 16) Gi畉i: DX=16
C但u 17) Gi畉i: C坦 2 l畛i:K畉t qu畉 動畛c 動a vo val1, kh担ng b畛 vo result nh動 y棚u c畉u
Gi叩 tr畛 c畛a SI v DI ph畉i tng l棚n thay v狸 gi畉m xu畛ng
C但u 18) Gi畉i: AX=44h
C但u 19) Gi畉i: AX=2200 DX=0002
C但u 20) Gi畉i: AL=6 AH=3
C但u 21) Gi畉i: AX=0077d DX=0002
C但u 22) Gi畉i: ch動董ng tr狸nh b叩o l畛i do cho gi叩 tr畛 c畛a th動董ng l畛n h董n 16 bit n棚n kh担ng th畛 ch畛a trong
thanh ghi AX
C但u 23) Gi畉i: MOV AX, (-5)
MOV BL, 3
MUL BL
MOV val1, AX
C但u 24) Gi畉i: Nh動 tr棚n
C但u 25) Gi畉i: MOV AX, Dividend + 2 ; Dividend, high
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
CWD
MOV CX, Divisor
DIV CX
MOV result_hi, AX ; save result
MOV AX, Dividend ; Dividend, low
DIV CX
MOV result_lo, AX
MOV remainder, DX
Dividend label WORD
DD 20000000h
Divisor DW 10h
Result_hi DW ?
Result_lo DW ?
Ch動董ng 9
C但u 1) Gi畉i:Nh坦m s畛 c畛a s畛 ASCII th畉p ph但n 動畛c l動u tr畛 trong 1 BYTE chia ra nh動 1 ASCII
t動董ng 動董ng 1 s畛 nh畛 ph但n 動畛c l動 tr畛 畛 d畉ng nh畛ng bit nh畛 ph但n 動畛c m達 h坦a.
C但u 2) Gi畉i: n畛i dung c畛a 4 BYTE s畉 l 34h, 30h
C但u 3) Gi畉i: thanh ghi BX
C但u 4) Gi畉i:kh担ng th畛 動畛c, l棚mh XLAT ch畛 d湛ng cho nh畛ng b畉ng m m畛i ph畉n t畛 c畛a n坦 l 8 bit
C但u 5) Gi畉i:BX ph畉i 動畛c 畉t l v畛 tr鱈 offset c畛a b畉ng
C但u 6) Gi畉i:kh担ng c坦 c畛 no b畛 畉nh h動畛ng b畛i l畛nh XLAT
C但u 7) Gi畉i:AL = 70h (t動董ng 畛ng l ch畛 G)
C但u 8) Gi畉i: tr動畛c l畛ch XLAT AL = 01h, sau l畛nh XLAT AL = 32h.
C但u 9) Gi畉i:
Uptable DB 97 DUP(0)
DB ABCDEFGHIJKLMNOPQRSTUVWXYZ
DB 133 DUP(0)
C但u 10) Gi畉i: 302h / 10 = 4Dh, d動 0
4Dh / 10 = 7h d動 7
7h / 10 = 0 d動 7
Gi叩 tr畛 ASCII th畉p ph但n l 770
C但u 11) Gi畉i:
畛 chuy畛n m畛t s畛 ASCII th畉p ph但n sang nh畛 ph但n ta c畉n chia s畛 坦 cho 010 r畛i c畛ng v畛i gi叩
tr畛 g畉n nh畉t. B畉ng sau tr狸nh by c叩ch chuy畛n:
Gi叩 tr畛 c滴 * 10 + s畛 = gi叩 tr畛 m畛i
0 * 10 + 8 = 8
8 * 10 + 1 = 81
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
81 * 10 + 9 = 819
819 * 10 + 6 = 8196
C但u 12) Gi畉i: Lm t動董ng t畛 c但u 11.
Gi叩 tr畛 c滴 * 16 + s畛 = gi叩 tr畛 m畛i
0 * 16 + 3 = 3
3 * 16 + F = 63
63 * 16 + 6 = 1014
1014 * 16 + 2 = 16226
C但u 13) Gi畉i: M畛t c叩ch l chia s畛 坦 cho 10000 chuy畛n ph畉n d動 thnh ASCII, v sau 坦 chuy畛n
th動董ng thnh ASCII. In s畛 th動董ng tr動畛c khi in s畛 d動. V鱈 d畛, ph辿p chia nh動 sau
00011000h/10000h =6 d動 l 9632
Ch炭ng ta in s畛 th動董ng tr動畛c khi in s畛 d動, k畉t qu畉 l: 69632.
C但u 14) Gi畉i: o畉n code 炭ng l:
MOV BX, offset validchars
MOV SI, offset Inputlist
MOV CX, 6
Getchar:
MOV AL, [SI]
MOV DL, AL
XLAT validchars
OR AL, AL
JZ Getchar
MOV AH, 2
INT 21h
LOOP Getchar



Inputlist DB 5, 26, 45, 96, 88, 128
validchars DB 32 DUP(0)
DB 96 DUP(0FFh)
DB 128 DUP(0)
C但u 15) Gi畉i:
1: Cho gi叩 tr畛 thanh ghi CX l炭c 畉u b畉ng 0
4: DX n畉m gi畛 gi叩 tr畛 chuy畛n 畛i
6: Chuy畛n s畛 thnh ASCII
8: 畉t s畛 vo trong Buffer
10: Tr動畛ng h畛p th動董ng b畉ng 0 hay kh担ng?
11: N畉u kh叩c 0 th狸 ti畉p t畛c l畉p.
C但u 16) Gi畉i:
L畉n1. 6
L畉n2. 3
L畉n3. 5
L畉n4. 1
Ch動董ng 10
C但u 1)
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM
C但u 2) Gi畉i
Ch畛n ba trong nh畛ng c叩i sau: Ch竪n vo, lo畉i b畛, t狸m m畛t chu畛i trong m畛t chu畛i, chuy畛n 畛i qua l畉i
ch畛 hoa ch畛 th動畛ng, n畛i chu畛i, lo畉i b畛 kho畉ng tr畉ng.
C但u 3) Gi畉i: Ph畉n di h董n kh担ng ch畛a 動畛c s畉 b畛 c畉t c畛t
C但u 4) Gi畉i: Nh畛ng k箪 t畛 trong chu畛i kh担ng b畛 thay 畛i. Ng担n ng畛 PascAL s畉 cho r畉ng chu畛i 坦 l
r畛ng.
C但u 5) Gi畉i: M畛t c叩ch l th棚m 16 bit nguy棚n 畛 v畛 tr鱈 b畉t 畉u chu畛i 畛 x叩c 畛nh chi畛u di chu畛i, th畛
t畛c gi畛ng STRCOPY th畛c hi畛n v嘆ng l畉p b畉ng s畛 l畉n ghi 畛 畉u chu畛i 畛 tr叩nh tr動畛ng h畛p ch辿p d動
k箪 t畛.
C但u 6) Gi畉i: Ta n棚n s畛 d畛ng l畛nh REP v狸 ZF kh担ng b畛 畉nh h動畛ng khi s畛 d畛ng l畛nh MOVSW.
REP MOVSW
C但u 7) Gi畉i: 畛 Vd1, 1 BYTE s畉 動畛c b畛 vo AL1. 畛 Vd2, kh担ng c坦 BYTE no 動畛c b畛, v狸 l畛nh
REP lm cho LODSB b畛 b畛 qua khi CX=0. L畛nh REP hi畉m khi 畛堰撮c d湛ng v畛i l畛nh LODSB v狸 n畛i
dung c畛a AL b畛 ch辿p 竪 sau m畛i l畉n l畉p.
C但u 8) Gi畉i: DI s畉 b畉ng 000Bh, v畛 tr鱈 th畛c th狸 sau 坦 l k箪 t畛 A
C但u 9) Gi畉i: C坦 2 l畛i
D嘆ng 6 ta ph畉i d湛ng JG thay v狸 JL v狸 l畛nh CMPSW so s叩nh 2 chu畛i k箪 t畛 n畉u chu畛i 鱈ch b辿 h董n
chu畛i ngu畛n th狸 ta nh畉y 畉n nh達n L1 v b畛 t畛 trong list02 vo AL
D嘆ng 7 l畛nh DEC n棚n thay b畉ng l畛nh SUB SI, 2. B畛i v狸 ch炭ng ta ch畛n gi叩 tr畛 16 bit, v l畛nh
CMPSW 畛 cho thanh ghi SI ch畛 畉n 2 BYTE trong v畛 tr鱈 炭ng c畛a danh s叩ch
C但u 10) Gi畉i: c坦 5 l畛i
D嘆ng 3: k箪 t畛 動畛c t狸m th畉y ph畉i 畉t trong AL ch畛 kh担ng ph畉i DL
D嘆ng 4: DI ph畉i 動畛c 畉t 畛 offset c畛a k箪 t畛 sau c湛ng trong chu畛i. C但u l畛nh 畛 d嘆ng ny c滴ng
b畛 l畛i c炭 ph叩p v狸 ch炭ng ta DI chuy畛n gi叩 tr畛 8 bit sang 16 bit
D嘆ng 5: CX kh担ng 動畛c g叩n gi叩 tr畛 l chi畛u di c畛a chu畛i v狸 v畉y ch炭ng ta kh担ng th畛 bi畉t
l畛nh SCASB 動畛c l畉p bao nhi棚u l畉n.
D嘆ng 6: L畛nh REPZ kh担ng 炭ng v狸 n坦 lm cho l畛nh SCASB ch畛 l畉p khi k箪 t畛 trong AL
gi畛ng v畛i k箪 t畛 trong bigstring. Ta n棚n d湛ng l畛nh REPNZ thay th畉.
D嘆ng 7: Ch炭ng ta ph畉i tng DI v狸 qu叩 tr狸nh t狸m c畛a ta ph畉i 畛 cho DI n畉m tr動畛c v畛 tr鱈 c畛a k箪
t畛 @
Ch動董ng tr狸nh 炭ng l:
Lookforit:
STD
MOV AL, @
MOV DI, offset biglen-1
MOV CX, biglen
REPNZ SCASB
INC DI
bigstring DB JOISD6H37DN398CX@98DF876743
biglen DW $-bigstring.
Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM

More Related Content

On tap ctmt 8086

  • 1. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM H畛i / 叩p H畛p ng畛 8086 C但u h畛i Ch動董ng 3 C但u 1) Nh畛ng l畛nh MOV no sau 但y sai ? T畉i sao ? Cho: var-1 DW 0 var-2 DW 6 var-3 DB 5 a> MOV AX, BX b> MOV var -2, AL c> MOV AX, BL d> MOV BH, 4A6Fh e> MOV DX, 3 f> MOV var-1, BX g> MOV CL, var-3 h>MOV CS, 0 i> MOV IP, AX j> MOV WORD PTR var-3, 10 k>MOV var-1, var-2 l>MOV DS, 1000 m>MOV DS, CS C但u 2) Vi畉t 畛nh ngh挑a d畛 li畛u cho chu畛i sau MY FILE.DTA C但u 3) Vi畉t 1 ph叩t bi畛u 畛nh ngh挑a d畛 li畛u cho 1 danh s叩ch g畛m 8 bit nh畛 l動u tr畛 c叩c gi叩 tr畛 sau 3, 15h, 0F6h, 11010000b C但u 4) Vi畉t khai b叩o d畛 li畛u tr畛c ti畉p cho 500 WORD li棚n t畛c m畛i WORD ch畛a gi叩 tr畛 1000h C但u 5) i畛n vo 担 tr畛ng: 1 to叩n h畉ng c坦 th畛 l 1 bi畉n, 1 thanh ghi, hay ______ C但u 6)Thanh ghi no sau 但y kh担ng 動畛c s畛 d畛ng nh動 l 1 to叩n h畉ng k畉t qu畉 : AX, CL, IP, DX, CS, BH, SS, SP, BP C但u 7)Gi叩 tr畛 HEX c畛a to叩n t畛 k畉t qu畉 s畉 l g狸 sau m畛i l畛nh MOV ? (N畉u l畛nh MOV sai th狸 vi畉t sai thay cho c但u tr畉 l畛i) a>MOV AX, BX AX=0023 BX =00A5 AX= b> MOV AH, 3 AX = 06AF AX= c>MOV DL, count DX=8F23 count =1A DL= d>MOV BL, AX BX=00A5 AX=4000 BL= e> MOV DI, 100h DI=06E9 DI= f>MOV DS, CX DS=0FFB2 CX=0020 DS= g>MOV var-1, A000 h> MOV count, AX count =25 AX= 4000
  • 2. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM count= i> MOV var-1, var-2 var-1=400h var-2= 0500h var-1= C但u 8)Gi叩 tr畛 HEX c畛a to叩n t畛 k畉t qu畉 s畉 l g狸 sau khi c但u l畛nh 動畛c th畛c thi?(var1 WORD, var2 BYTE, count BYTE)(n畉u c但u l畛nh sai th狸 ghi sai ) a>MOV AH, BL AX=0023 BX=00A5 AX= b> ADD AH, 3 AX =06AF AX= c> SUB DL, count DX= 8F23 count= 1A DX= d>INC BL BX=FFFF BX= e> ADD DI, 100h DI=06E9 DI= f> DEC CX CX=0000 CX= g) ADD var1, BX var1 =0025 BX=A000 var1= h> XCHG var2, AL var2= 25 AL=41 var2= i>SUB var 1, var2 var1=15A6 var2=38 var1= j> DEC var 2 var2=01 var2= C但u 9) Vi畉t 畛nh ngh挑a cho bi畉n ArrayPtr bao g畛m 畛a ch畛 offset c畛a bi畉n IntArray C但u 10) AX s畉 b畉ng bao nhi棚u sau khi th畛c hi畛n nh畛ng c但u l畛nh sau. MOV AX, Array1 INC AX ADD AH, 1 SUB AX, Array1 ... Array1 DW 10h, 20h Array2 DW 30h, 40h C但u 11) Khi th畛c hi畛n c但u l畛nh sau, h達y i畛n gi叩 tr畛 HEX th鱈ch h畛p vo ch畛 tr畛ng MOV AX, Array1 ;a> AX= XCHG Array2, AX ;b> AX= DEC AX ; SUB Array2, 2 ;c> Array2= MOV BX, Array2 ;d> AX= ADD AH, BL ;e> AX= . . . Array1 DW 20h, 10h Array2 DW 30h, 40h
  • 3. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM Ch動董ng 6 C但u 1: C坦 ph畉i l畛nh LOOP s畉 d畛ng khi ZF 動畛c b畉t kh担ng? C但u 2: H達y cho bi畉t t棚n c畛a 1 l畛nh chuy畛n i畛u khi畛n kh担ng i畛u ki畛n v i畛u khi畛n? C但u 3: 3 to叩n h畉ng c董 b畉n l thanh ghi, b畛 nh畛 v _______ . C但u 4: 畛a ch畛 c畛a nh坦m to叩n h畉ng li棚n quan 畉n i畛m b畉t 畉u c畛a ch動董ng tr狸nh 畉t 畛 th畛i gian h畛p hay 畛 th畛i gian li棚n k畉t? C但u 5: Trong m達 m叩y t畛 1 file danh s叩ch, R n坦i l棚n i畛u g狸? SB 0021 R ADD BX, val1 C但u 6: Thanh ghi no 動畛c g畛i l thanh ghi n畛n. C但u 7: Nh畉n bi畉t ki畛u to叩n h畉ng(thanh ghi, to叩n h畉ng t畛c th畛i, 畛a ch畛 tr畛c ti畉p, 畛a ch畛 gi叩n ti畉p) 動畛c s畛 d畛ng trong c叩c c但u l畛nh sau: a) MOV AL, 20 b) ADD CX, WORD PTR val c) MOV BX, offset count d) ADD DL, [BX] C但u 8: T畉i sao l畉i s畛 d畛ng to叩n t畛 PTR trong c但u l畛nh sau: ADD WORD PTR[SI], 5 C但u 9: S畛 d畛ng to叩n t畛 PTR trong tr動畛ng h畛p no sau 但y: a) MOV AL, bval b) MOV DL, [BX] c) SUB [BX], 2 d) MOV CL, Wval e) ADD AL, Bval + 1 Bval DB 10h, 20h Wval DW 1000h C但u 10: BList DB 1, 2, 3, 4, 5 Wlist DW 6, 7, 8, 9, 0AH H達y s畛a l畛i sai n畉u c坦 trong c叩c c但u l畛nh sau a) MOV AL, BList b) ADD AL, Wlist+1 c) MOV BX, offset BList d) MOV DL, [BL] e) ADD [BX], BYTE PTR 2 f) MOV CX, Wlist g) MOV DX, CX h) INC WORD PTR DX i) DEC AX j) INC [CX]
  • 4. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM C但u 11: Ch動董ng tr狸nh sau t鱈nh t畛ng c畛a 1 danh s叩ch 10 s畛 v 動a k畉t qu畉 vo TOTAL. H達y s畛a l畛i sai c炭 ph叩p v s畛a l畛i sai lu畉n l箪, gi畉i th鱈ch v 動a ra gi畉i ph叩p d炭ng: 1: Begin: 2: MOV CX, 10 3: MOV SI, offset Bytelist 4: NextByte: 5: ADD DX, [SI] 6: INC DX 7: LOOP Begin 8: MOV TOTAL, DX 9: .DATA 10: Bytelist DB 56, 22, 30, 40, 76, 82, 10, 44, 23 11: TOTAL DW 10 Ch動董ng 7 C但u 1) Gi畉i th鱈ch s畛 kh叩c bi畛t gi畛a l畛nh JMP v JZ C但u 2) L畛ai c畛 no c畛a CPU 動畛c d湛ng 畛 so s叩nh kh担ng d畉u? C但u 3) Lo畉i c畛 no c畛a CPU 動畛c d湛ng 畛 so s叩nh c坦 d畉u? C但u 4) L畛nh nh畉y c坦 i畛u ki畛n n叩o d畛a vo n畛i dung c畛a thanh ghi t畛ng qu叩t? C但u 5) Gi畉i th鱈ch s畛 kh叩c nhau c畛a 2 l畛nh JA v JNBE C但u 6) Gi畉i th鱈ch s畛 kh叩c nhau c畛a l畛nh JB v JL C但u 7) C坦 ph畉i l畛nh nh畉y c坦 i畛u ki畛n nh畉y 畉n b畉t k狸 nh達n no trong c湛ng segment kh担ng? C但u 8) L畛nh JB 動畛c th畛c thi, v畉y c畛 no 動畛c b畉t? C但u 9) L畛nh CMP so s叩nh 2 to叩n h畉ng v畛a 動畛c th畛c thi xong, v畉y trong c叩c l畛nh nh畉y c坦 k sau, l畛nh no 動畛c th畛c thi: OF SF ZF CF a) JNZ 0 0 1 0 b) JA 1 0 1 0 c) JNB 1 0 1 0 d) JBE 0 0 1 0 e) JGE 1 1 0 0 f) JNLE 0 1 0 1 g) JNS 0 0 1 0 h) JNG 1 1 0 1 i) JE 1 0 1 0 j) JNAE 1 0 1 0 C但u 10) Sau khi th畛c thi ch動董ng tr狸nh sau, gi叩 tr畛 c畛a AL v BL l bao nhi棚u? MOV AL, val1
  • 5. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM MOV BL, val2 AND AX, 0FB6h CMP AL, BL JA label1 MOV AL, BL JMP exit label1: MOV BL, AL exit: val1 DB 6BH val2 DB 3Fh C但u 11) Sau khi ch動董ng tr狸nh sau 動畛c th畛c thi, gi叩 tr畛 c畛a AL, BL l bao nhi棚u? MOV AL, val2 MOV BL, val1 OR BL, 0Fh SUB AL, BL JB Label1 MOV AL, 1 JMP exit Label1: MOV BL, 1 exit: val1DB 6BH val2 DB 3Fh C但u 12) Sau khi ch動董ng tr狸nh th畛c thi, gi叩 tr畛 c畛a AL v BL l bao nhi棚u? MOV AL, val2 MOV BL, val1 XOR BL, 0FFh TEST AL, 3 JZ Label1 MOV AL, 1 JMP exit Label1: MOV BL, 1 exit: val1 DB 35h val2 DB 3Fh C但u 13) Sau khi ch動董ng trinh sau 動畛c th畛c thi th狸 gi叩 tr畛 c畛a CX, DX v SI l bao nhi棚u? MOV SI, 0 MOV CX, val1 MOV DX, val2 AND CX, 0FFh NOT DX XCHG DX, val1 again: INC SI DEC DX LOOP again
  • 6. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM val1 DW 026AH val2 DW 3FD9h C但u 14) Sau khi th畛c thi ch動董ng tr狸nh, gi叩 tr畛 c畛a CX, DX, SI v val2 l bao nhi棚u? MOV SI, offset val1 MOV CX, [SI] ADD SI, 2 MOV DX, [SI] XCHG DX, val1 AND DX, 0FF00h again: DEC WORD PTR[SI] DEC DX CMP DX, 01FFh LOOPZ again val1 DW 026AH val2 DW 3F09h Ch動董ng 8 C但u 1) th畉o lu畉n nh畛ng c叩ch m ph辿p c畛ng th畉p ph但n c坦 th畛 th畛c hi畛n cho 2 s畛 th畉p ph但n ASCII sau: 2, 1234 v 300, 5. C但u 2) H達y cho bi畉t 2 ng担n ng畛 c畉p cao th担ng d畛ng m c坦 ch畛a l畛nh shift C但u 3) B畉n c坦 bi畉t ng担n ng畛 c畉p cao no c坦 l畛nh quay kh担ng? C但u 4) Hai c但u l畛nh no chuy畛n nh坦m b鱈t trong m畛t to叩n h畉ng v畛 b棚n tr叩i v copy bit cao nh畉t trong CF vo v畛 tr鱈 b鱈t th畉p nh畉t ? C但u 5) L畛nh no chuy畛n m畛t nh坦m bit sang b棚n ph畉i copy bit th畉p vo trong CF v copy CF vo v畛 tr鱈 b鱈t cao? C畉u 6) L畛nh no chuy畛n m畛t nh坦m b鱈t sang b棚n ph畉i v sau 坦 2 bit cao nh畉t c畛a n坦 gi畛ng nhau? C但u 7) L畛nh no chuy畛n 1 nh坦m b鱈t sang b棚n tr叩i copy CF vo v畛 tr鱈 b鱈t th畉p v copy b鱈t cao nh畉t vo CF? C但u 8) Nh坦m l畛nh no s畉 th畛c thi nhanh h董n: Nh坦m 1: MOV CL, 2 SHL AL, CL Nh坦m 2: SHL AL, 1 SHL AL, 1 C但u 9) Chuy畛n g狸 s畉 x畉y ra v畛i n畛i dung c畛a CF khi l畛nh SHR th畛c thi ? C但u 10) 畛 nh但n 1 s畛 v畛i 16 ta ph畉i d畛ch tr叩i bao nhi棚u l畉n ? C但u 11) Vi畉t 2 c但u l畛nh chia BX cho 4, s畛 d畛ng l畛nh shift?
  • 7. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM C但u 12) Vi畉t 1 o畉n l畛nh 畛 nh但n AL cho l2(d湛ng l畛nh shift)? i畛u ki畛n gi叩 tr畛 AL l炭c 畉u nh但n v畛i 12 cho k畉t qu畉 l 8 bit C但u 13) Sau khi ch動董ng tr狸nh th畛c thi, gi叩 tr畛 c畛a AL b畉ng bao nhi棚u? (Cho AL=EAh, CL=2, CF=0) SHL AL, 1 SHL AL, CL SHR AL, 1 SAR AL, 1 ROL AL, 1 ROL AL, CL ROR AL, 1 RCL AL, 1 RCR AL, 1 RCR AL, CL C但u 14) Vi畉t 2 c但u l畛nh ho叩n 畛i n畛i dung c畛a 4 b鱈t tr叩i v 4 b鱈t ph畉i c畛a thanh ghi DL? (V鱈 d畛 :DL=A9h -> DL=9AH) C但u 15) Vi畉t 1 c但u l畛nh d畛ch 1 b鱈t cao nh畉t c畛a thanh ghi DL sang b鱈t th畉p nh畉t c畛a thanh ghi DH C但u 16) Sau khi ch動董ng tr狸nh th畛c thi n畛i dung c畛a DX l bao nhi棚u ? MOV DX, 5 STC MOV AX, 10h ADC DX, AX C但u 17) Cho o畉n ch動董ng tr狸nh sau, c坦 bao nh畛棚u l畛i? MOV CX, 8 MOV SI, val1 MOV DI, val2 CLC Top: MOV AL, BYTE PTR[SI] SHL AL, BYTE PTR[DI] MOV BYTE PTR[SI], AL DEC SI DEC DI LOOP Top val1 DQ 2040300436204A1h val2 DQ 055210304A2630B2h result DQ 0 C但u 18) Sau khi ch動董ng tr狸nh 動畛c th畛c thi gi叩 tr畛 c畛a AX l bao nhi棚u? MOV AX, 22h MOV CL, 2 MUL CL C但u 19) Sau khi ch動董ng tr狸nh th畛c thi gi叩 tr畛 c畛a AX, DX l bao nhi棚u? MOV DX, 0
  • 8. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM MOV AX, 222h MOV CX, 100h MUL CX C但u 20) Sau khi ch動董ng tr狸nh th畛c thi gi叩 tri c畛a AX l bao nhi棚u? MOV AL, 63h MOV BL, 10h DIV BL C但u 21) Sau khi ch動董ng tr狸nh th畛c thi gi叩 tr畛 c畛a AX, DX l bao nhi棚u? MOV AX, 1234 MOV DX, 0 MOV BX, 10h DIV BX C但u 22) Sau khi ch動董ng tr狸nh th畛c thi gi叩 tr畛 c畛a AX, DX l bao nhi棚u? MOV AX, 4000h MOV DX, 500h MOV BX, 10h DIV BX C但u 23) Vi畉t l畛nh nh但n (-5) v畛i 3 l動u vo bi畉n val1 16bit? C但u 24) Vi畉t l畛nh chia (-276) cho 10 v l動u k畉t qu畉 vo bi畉n val1 16bit C但u 25) Vi畉t ch動董ng tr狸nh chia 20000000h cho 10h v l動u tr畛 k畉t qu畉 vo result_hi v result_lo. G畛i 箪: ph畉i d湛ng chia 32 bit 畛 tr叩nh trn. Ch動董ng 9 C但u 1) H達y n坦i i畛m kh叩c nhau gi畛a ASCII th畉p ph但n v s畛 nh畛 ph但n. C但u 2) N畉u l動u tr畛 s畛 4096 d畉ng ASCII th畉p ph但n trong b畛 nh畛. N畛i dung c畛a BYTE ny 畛 d畉ng HEX s畉 l g狸 ? C但u 3) Thanh ghi no 動畛c d湛ng trong l畛nh XLAT 畛 ch畛a Ch畛 s畛 c畛a b畉ng tra C但u 4) L畛nh XLAT c坦 th畛 d湛ng trong tr動畛ng h畛p m畛i ph畉n t畛 c畛a b畉ng l 16 bit hay kh担ng C但u 5) N畉u nh動 t棚n c畛a b畉ng 動畛c d湛ng nh動 1 to叩n h畉ng.L畛nh XLAT d湛ng t棚n ny hay d湛ng thanh ghi BX C但u 6) Nh畛ng c畛 no s畉 ch畛u t叩c 畛ng sau l畛nh XLAT C但u 7) CHo 畛an Ch動董ng tr狸nh sau MOV BX, offset Chars MOV AL, 6 XLAT
  • 9. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM Chars DB ABCDEFGHIJ Sau khi ch動董ng tr狸nh 動畛c th畛c thi, gi叩 tr畛 c畛a thanh ghi AL s畉 l bao nhi棚u C但u 8) Sau khi khi ch動董ng tr狸nh th畛c thi, gi叩 tr畛 thanh ghi AL l bao nhi棚u? (bi畉t PTR1 畉t 畛 v畛 tr鱈 0106h) MOV BX, PTR2 MOV AL, BYTE PTR PTR3 + 1 XLAT Table DB 1234567890 PTR1 DW PTR2 PTR2 DW Table PTR3 DW PTR1 C但u 9) Thi畉t k畉 m畛t b畉ng m c坦 th畛 s畛 d畛ng b畛i l畛nh XLAT 畛 chuy畛n nh畛ng k箪 t畛 th動畛ng thnh nh畛ng k箪 t畛 hoa. C但u 10)H達y tr狸nh by thu畉t to叩n ny 畛 chuy畛n t畛 nh畛 ph但n sang ASCII th畉p ph但n (v鱈 d畛: s畛 302h) C但u 11)H達y tr狸nh by thu畉t to叩n chuy畛n t畛 gi叩 tr畛 ASCII th畉p ph但n sang nh畛 ph但n V鱈 d畛 chuy畛n s畛 8196 C但u 12) Tr狸nh by nh動 th畉 no 畛 chuy畛n s畛 ASCII th畉p l畛c ph但n 3F62 thnh nh畛 ph但n C但u 13) Nh動 tr棚n, ch炭ng ta ch畛 c坦 th畛 chuy畛n s畛 16 bit nh畛 ph但n sang ASCII th畉p ph但n. N畉u ch炭ng ta mu畛n chuy畛n s畛 32 bit 00011000h sang ASCII, ch畉ng h畉n, ch炭ng ta c坦 th畛 hi畛u ch畛nh ch炭ng. B畉n c坦 th畛 ngh挑 ra c叩ch 畛 chia 担i s畛 tr棚n v chuy畛n thnh m畛t nh坦m n畛a c叩i kh担ng? C但u 14) o畉n ch動董ng tr狸nh sau l畉y nh坦m k箪 t畛 t畛 Inputlist, ki畛m tra trong validchars. N畉u AL != 0 th狸 in ra k箪 t畛. H達y t狸m v s畛a l畛i MOV BX, validchars MOV DI, offset Inputlist Getchar: MOV AL, [SI] XLAT validchars OR AL, AL JZ Getchar INT 21h LOOP Getchar Inputlist DB 5, 26, 45, 96, 88, 128 validchars DB 32 DUP(0) DB 96 DUP(0FFh) DB 128 DUP(0) C但u 15) o畉n ch動董ng tr狸nh sau vi畉t th動 m畛c WRINT.
  • 10. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM H達y gi畉i th鱈ch c叩c d嘆ng l畛nh 1, 4, 6, 8, 10, 11 1: MOV CX, 0 2: MOV DI, offset Buffer +6 3: MOV BX, 10 L1: 4: MOV DX, 0 5: DIV BX 6: OR DL, 30h 7: DEC DI 8: MOV [DI], DL 9: INC CX 10: OR AX, AX 11: JNZ L1 Buffer DB 6 DUP( ) C但u 16) Trong ch動董ng tr狸nh tr棚n, n畉u AX ch畛a gi叩 tr畛 0600h khi b畉t 畉u, gi叩 tr畛 c畛a DX l bao nhi棚u trong m畛i v嘆ng l畉p Ch動董ng 10 C但u 1) C但u 2) H達y cho bi畉t t棚n 鱈t nh畉t 3 chu畛i trong tr狸nh bi棚n so畉n m c坦 th畛 d畛 hi畛n th畛c trong ng担n ng畛 assembly. C但u 3) Ng担n ng畛 COBOL xem 1 chu畛i nh動 m畛t d達y k箪 t畛 c坦 chi畛u di c畛 畛nh hay m畛t tr動畛ng k箪 t畛. Chuy畛n g狸 s畉 x畉y ra n畉u ta ch辿p m畛t chu畛i di h董n sang m畛t chu畛i ng畉n h董n. C但u 4) Chuy畛n g狸 s畉 x畉y ra v畛i chu畛i trong Turbo Pascal khi 畛 di c畛a BYTE bi畛u di畛n 動畛c 畉t gi叩 tr畛 l 0? C但u 5) L畛nh STRCOPY kh担ng ki畛m tra chu畛i 鱈ch c坦 畛 r畛ng 畛 ch畛a chu畛i ngu畛n kh担ng? o畉n m達 thay 畛i STRCOPY 畛 ngn vi畛c l動u tr畛 v動畛t qu叩 畛 r畛ng c畛a chu畛i 鱈ch. C但u 6) o畉n ch動董ng tr狸nh sau, 1 danh s叩ch 16 bit nguy棚n 動畛c ch辿p t畛 sourcew 畉n destw. L畛nh l畉p no n棚n 動畛c s畛 d畛ng: REP, REPZ, REPNZ: CLD MOV CX, count MOV SI, offset sourcew MOV DI, offset destw MOVSW C但u 7) S畛 d畛ng ch動董ng tr狸nh debug 畛 ch畉y v ki畛m tra 2 v鱈 d畛 sau. Bao nhi棚u BYTE 動畛c n畉p vo thanh ghi AL m畛i l畉n Vd1: MOV CX, 0 MOV SI, offset source LODSB Vd2: MOV CX, 0
  • 11. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM MOV SI, offset source REP LODSB C但u 8) Sau khi Ch動董ng tr狸nh th畛c thi, gi叩 tr畛 c畛a DI l bao nhi棚u (dest b畉t 畉u t畉i v畛 tr鱈 0006h) CLD MOV AL, A MOV DI, offset dest MOV CX, 9 REPNZ SCASB dest DB XXXXAXXX C但u 9) Trong v鱈 d畛 sau, ch炭ng ta c畉n so s叩nh 2 d達y nguy棚n. T畉i v畛 tr鱈 c坦 2 d達y kh叩c nhau, ta DI chuy畛n thnh ph畉n th畉p nh畉t c畛a d達y vo AX. H達y t狸m v s畛a l畛i: CLD LEA SI, list01 LEA DI, list02 MOV CX, 4 REPE CMPSW JL L1 DEC SI MOV AX, [SI] JMP L2 L1: SUB DI, 2 MOV AX, [DI] L2: RET List01 DW-1.2, -4.20 List02 DW-1.2, 3.20 C但u 10) V鱈 d畛 sau qu辿t 1 chu畛i theo k箪 t畛 ng動畛c v t狸m k箪 t畛 @. H達y t狸m v s畛a l畛i. Lookforit: STD MOV DL, @ MOV DI, bigstring REPZ SCASB DEC DI bigstring DB JOISD6H37DN398CX@98DF876743 biglen DW $-bigstring Tr畉 l畛i Ch動董ng 3 C但u 1) a> 炭ng b> Sai v狸 kh担ng bi畉t 動畛c var2 l 16 bit hay 8 bit, c嘆n t湛y thu畛c vo d嘆ng 畛ng ngh挑a var-2. c> Sai v狸 kh担ng h畛p ki畛u ( AX :16bit, BL: 8bit)
  • 12. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM d> Sai v狸 kh担ng h畛p ki畛u (BH:8 bit) e> 炭ng f> 炭ng g> 炭ng h>Sai v狸 kh担ng th畛 thay 畛i n畛i dung c畛a CS i> Sai v狸 kh担ng th畛 thay 畛i thanh ghi IP j> Sai v狸 trn qua BYTE n畉m sau 畛a ch畛 c畛a var-3 k> Sai v狸 hai to叩n h畉ng kh担ng th畛 畛ng th畛i l b畛 nh畛 l>Sai v狸 kh担ng th畛 ghi th畉ng gi叩 tr畛 t畛c th畛i vo thanh ghi o畉n m> Sai v狸 kh担ng 動畛c ph辿p ghi t畛 thanh ghi o畉n 畉n thanh ghi o畉n C但u 2) Gi畉i : filename DB MY FILE.DTA C但u 3) Gi畉i : DB 3, 15h, 0F6h, 11010000b C但u 4) Gi畉i: DW 500 DUP(1000h) C但u 5) Gi畉i:1 to叩n h畉ng t畛c th畛i C但u 6) Gi畉i: IP, CS C但u 7) a> Gi畉i : AX= 00A5 b> Gi畉i : AX =03AF c> Gi畉i : DL=1A d> Gi畉i: sai e> Gi畉i: DI=0100h f> Gi畉i: DS= 0020 g> Gi畉i: kh担ng bi畉t 動畛c h> Gi畉i: sai i> Gi畉i : sai C但u 8) a> Gi畉i: AX= A523 b> Gi畉i : AX=09AF c> Gi畉i: DX=8F09 d> Gi畉i: BX=FF00 e> Gi畉i: DI=07E9 f> Gi畉i: CX= FFFF g> Gi畉i : var1=A025 h> Gi畉i : var2=41 i> Gi畉i: sai j> Gi畉i: var2= 0 C但u 9) Gi畉i: ArrayPtr DW IntArray C但u 10) Gi畉i: AX= 0101h C但u 11) a> AX=0020 b> AX=0030 c> Array2=001E d> AX=002F
  • 13. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM e> AX=1E2F Ch動董ng 6 C但u 1) Gi畉i: L畛nh LOOP ch畛 d畛ng khi CX=0. C但u 2) Gi畉i: L畛nh JMP C但u 3) Gi畉i: gi叩 tr畛 t畛c th畛i . C但u 4) Gi畉i: 畛 th畛i gian li棚n k畉t C但u 5) Gi畉i: C但u l畛nh ny ch畛a 畛ng 1 to叩n h畉ng 動畛c 畛nh v畛 l畉i. C但u 6) Gi畉i: Thanh ghi BX v BP C但u 7) Gi畉i: a) Thanh ghi, to叩n h畉ng t畛c th畛i b) Thanh ghi, 畛a ch畛 tr畛c ti畉p. c) Thanh ghi, 畛a ch畛 tr畛c ti畉p d) Thanh ghi, 畛a ch畛 gi叩n ti畉p C但u 8) Gi畉i: V狸 s畛 d畛ng to叩n h畉ng t畛c th畛i s畉 g但y ra s畛 nh畉p nh畉ng, c坦 th畛 xem to叩n h畉ng t畛c th畛i l 8 bit hay 16 bit. To叩n h畉ng 鱈ch [SI] c滴ng kh担ng n坦i l棚n k鱈ch c畛 c畛 th畛 c畛a 担 nh畛 l 8 bit hay 16 bit C但u 9) Gi畉i: a) kh担ng s畛 d畛ng b) kh担ng s畛 d畛ng c) SUB BYTE PTR[BX], 2 d) MOV CL, BYTE PTR Wval e) kh担ng s畛 d畛ng C但u 10) Gi畉i: a) MOV AL, BList b) ADD AX, Wlist + 1 c) MOV BX, offset BList d) MOV DL, [BX] e) ADD BYTE PTR[BX], 2 f) MOV CX, Wlist g) MOV DX, CX h) DX( kh担ng c坦 l畛nh WORD PTR DX) i) DEC AX j) INC CX( kh担ng c坦 l畛nh tng tr畛c ti畉p 担 nh畛) C但u 11) Gi畉i: Sai l畛i c炭 ph叩p: D嘆ng 5: DX: 16 bit, [SI]: 8 bit Sai l畛i lu畉n l箪: a) Ch動a x坦a n畛i dung c畛a DX khi v畛a b畉t 畉u ch動董ng tr狸nh b) Ph辿p t鱈nh t畛ng tr棚n kh担ng thay d畛i SI n棚n l t鱈nh t畛ng 10 l畉n gi叩 tr畛 s畛 56 c) Ph辿p t鱈nh t畛ng tr棚n s畉 l畉p l畉i v担 t畉n v gi叩 tr畛 c畛a CX kh担ng bao gi畛 = 0.
  • 14. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM d) Ch動a x辿t tr動畛ng h畛p t鱈nh t畛ng v b畛 trn e) . Ch動董ng tr狸nh 炭ng l: Begin: MOV CX, 10 MOV SI, offset Bytelist XOR DX, DX Next BYTE ADD DL, [SI] ADC DH, 0 ;TH b畛 trn ;DH DH+ CF+0 INC SI LOOP NextByte MOV TOTAL, DX .DATA Bytelist DB 56, 22, 30, 40, 76, 82, 10, 5, 44, 23 TOTAL DW 0 C叩ch kh叩c: Begin: MOV CX, 10 MOV SI, offset Bytelist XOR DX, DX XOR AX, AX Nextbyte: MOV AL, [SI] ADD DX, AX INC SI LOOP NextByte MOV TOTAL, DX .DATA Bytelist DB 56, 22, 30, 40, 76, 82, 10, 5, 44, 23 TOTAL DW 0 Ch動董ng 7 C但u 1) Gi畉i: L畛nh JMP l l畛nh nh畉y kh担ng i畛u ki畛n, l畛nh ny lu担n 動畛c th畛c hi畛n. L畛nh JZ l l畛nh nh畉y c坦 i畛u ki畛n, l畛nh ny ch畛 動畛c th畛c hi畛n khi c畛 ZF 動畛c b畉t C但u 2) Gi畉i: CF v ZF C但u 3) Gi畉i: ZF, SF, OF C但u 4) Gi畉i: JCXZ C但u 5) Gi畉i: 2 l畛nh ny ch畛 kh叩c nhau c叩ch vi畉t, s畛 th畛c thi c畛a 2 l畛nh ny l gi畛ng nhau C但u 6) Gi畉i: JB d湛ng trong tr動畛ng h畛p so s叩nh kh担ng d畉u, JL d湛ng trong tr動畛ng h畛p so s叩nh c坦 d畉u.
  • 15. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM C但u 7) Gi畉i: kh担ng, ph畉i.d湛ng l畛nh short jump ch畛 畛 nh畉y trong kho畉ng -128 畉n 127 BYTE so v畛i v畛 tr鱈 hi畛n hnh C但u 8) Gi畉i: CF C但u 9) Gi畉i: a) kh担ng nh畉y b) kh担ng nh畉y c) nh畉y d) nh畉y e) nh畉y f) kh担ng nh畉y g) nh畉y h) kh担ng nh畉y i) nh畉y j) nh畉y C但u 10) Gi畉i: AL=3F, BL=3F C但u 11) Gi畉i: AL=D0h, BL=1h C但u 12) Gi畉i: AL=1h, BL=CAh C但u 13) Gi畉i: CX=0, DX=0200h, SI=006A C但u 14) Gi畉i: CX=0269, DX=01FF, SI=??, val2=3F08h Ch動董ng 8 C但u 1) C但u 2) Gi畉i: C v PascAL C但u 3) Gi畉i: C但u 4) Gi畉i: ROL C但u 5) Gi畉i: RCR C畉u 6) Gi畉i: SAR C但u 7) Gi畉i: RCL C但u 8) Gi畉i: Nh坦m 2 C但u 9) Gi畉i: b鱈t t畉i v畛 tr鱈 0 cua thanh ghi ang th畛c hi畛n l畛nh d畛ch 動畛c 動a vo CF C但u 10) Gi畉i: B畛n l畉n C但u 11) Gi畉i: SHR BX, 1 SHR BX, 1
  • 16. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM C但u 12) Gi畉i: 2 c叩ch C叩ch 1: b畛 k畉t qu畉 vo AL PUSH AX SHL AL, 1 SHL AL, 1 SHL AL, 1 MOV DL, AL POP AX SHL AL, 1 SHL AL, 1 ADD AL, DL C叩ch 2: b畛 k畉t qu畉 vo AL MOV DL, AL SHL DL, 1 SHL DL, 1 SHL DL, 1 SHL AL, 1 SHL AL, 1 ADD DL, AL C但u 13) Gi畉i: AL=14h C但u 14) Gi畉i: MOV CL, 4 ROR AL, CL ;hay ROL DL, CL C但u 15) Gi畉i: SHL DX, 1 C但u 16) Gi畉i: DX=16 C但u 17) Gi畉i: C坦 2 l畛i:K畉t qu畉 動畛c 動a vo val1, kh担ng b畛 vo result nh動 y棚u c畉u Gi叩 tr畛 c畛a SI v DI ph畉i tng l棚n thay v狸 gi畉m xu畛ng C但u 18) Gi畉i: AX=44h C但u 19) Gi畉i: AX=2200 DX=0002 C但u 20) Gi畉i: AL=6 AH=3 C但u 21) Gi畉i: AX=0077d DX=0002 C但u 22) Gi畉i: ch動董ng tr狸nh b叩o l畛i do cho gi叩 tr畛 c畛a th動董ng l畛n h董n 16 bit n棚n kh担ng th畛 ch畛a trong thanh ghi AX C但u 23) Gi畉i: MOV AX, (-5) MOV BL, 3 MUL BL MOV val1, AX C但u 24) Gi畉i: Nh動 tr棚n C但u 25) Gi畉i: MOV AX, Dividend + 2 ; Dividend, high
  • 17. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM CWD MOV CX, Divisor DIV CX MOV result_hi, AX ; save result MOV AX, Dividend ; Dividend, low DIV CX MOV result_lo, AX MOV remainder, DX Dividend label WORD DD 20000000h Divisor DW 10h Result_hi DW ? Result_lo DW ? Ch動董ng 9 C但u 1) Gi畉i:Nh坦m s畛 c畛a s畛 ASCII th畉p ph但n 動畛c l動u tr畛 trong 1 BYTE chia ra nh動 1 ASCII t動董ng 動董ng 1 s畛 nh畛 ph但n 動畛c l動 tr畛 畛 d畉ng nh畛ng bit nh畛 ph但n 動畛c m達 h坦a. C但u 2) Gi畉i: n畛i dung c畛a 4 BYTE s畉 l 34h, 30h C但u 3) Gi畉i: thanh ghi BX C但u 4) Gi畉i:kh担ng th畛 動畛c, l棚mh XLAT ch畛 d湛ng cho nh畛ng b畉ng m m畛i ph畉n t畛 c畛a n坦 l 8 bit C但u 5) Gi畉i:BX ph畉i 動畛c 畉t l v畛 tr鱈 offset c畛a b畉ng C但u 6) Gi畉i:kh担ng c坦 c畛 no b畛 畉nh h動畛ng b畛i l畛nh XLAT C但u 7) Gi畉i:AL = 70h (t動董ng 畛ng l ch畛 G) C但u 8) Gi畉i: tr動畛c l畛ch XLAT AL = 01h, sau l畛nh XLAT AL = 32h. C但u 9) Gi畉i: Uptable DB 97 DUP(0) DB ABCDEFGHIJKLMNOPQRSTUVWXYZ DB 133 DUP(0) C但u 10) Gi畉i: 302h / 10 = 4Dh, d動 0 4Dh / 10 = 7h d動 7 7h / 10 = 0 d動 7 Gi叩 tr畛 ASCII th畉p ph但n l 770 C但u 11) Gi畉i: 畛 chuy畛n m畛t s畛 ASCII th畉p ph但n sang nh畛 ph但n ta c畉n chia s畛 坦 cho 010 r畛i c畛ng v畛i gi叩 tr畛 g畉n nh畉t. B畉ng sau tr狸nh by c叩ch chuy畛n: Gi叩 tr畛 c滴 * 10 + s畛 = gi叩 tr畛 m畛i 0 * 10 + 8 = 8 8 * 10 + 1 = 81
  • 18. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM 81 * 10 + 9 = 819 819 * 10 + 6 = 8196 C但u 12) Gi畉i: Lm t動董ng t畛 c但u 11. Gi叩 tr畛 c滴 * 16 + s畛 = gi叩 tr畛 m畛i 0 * 16 + 3 = 3 3 * 16 + F = 63 63 * 16 + 6 = 1014 1014 * 16 + 2 = 16226 C但u 13) Gi畉i: M畛t c叩ch l chia s畛 坦 cho 10000 chuy畛n ph畉n d動 thnh ASCII, v sau 坦 chuy畛n th動董ng thnh ASCII. In s畛 th動董ng tr動畛c khi in s畛 d動. V鱈 d畛, ph辿p chia nh動 sau 00011000h/10000h =6 d動 l 9632 Ch炭ng ta in s畛 th動董ng tr動畛c khi in s畛 d動, k畉t qu畉 l: 69632. C但u 14) Gi畉i: o畉n code 炭ng l: MOV BX, offset validchars MOV SI, offset Inputlist MOV CX, 6 Getchar: MOV AL, [SI] MOV DL, AL XLAT validchars OR AL, AL JZ Getchar MOV AH, 2 INT 21h LOOP Getchar Inputlist DB 5, 26, 45, 96, 88, 128 validchars DB 32 DUP(0) DB 96 DUP(0FFh) DB 128 DUP(0) C但u 15) Gi畉i: 1: Cho gi叩 tr畛 thanh ghi CX l炭c 畉u b畉ng 0 4: DX n畉m gi畛 gi叩 tr畛 chuy畛n 畛i 6: Chuy畛n s畛 thnh ASCII 8: 畉t s畛 vo trong Buffer 10: Tr動畛ng h畛p th動董ng b畉ng 0 hay kh担ng? 11: N畉u kh叩c 0 th狸 ti畉p t畛c l畉p. C但u 16) Gi畉i: L畉n1. 6 L畉n2. 3 L畉n3. 5 L畉n4. 1 Ch動董ng 10 C但u 1)
  • 19. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM C但u 2) Gi畉i Ch畛n ba trong nh畛ng c叩i sau: Ch竪n vo, lo畉i b畛, t狸m m畛t chu畛i trong m畛t chu畛i, chuy畛n 畛i qua l畉i ch畛 hoa ch畛 th動畛ng, n畛i chu畛i, lo畉i b畛 kho畉ng tr畉ng. C但u 3) Gi畉i: Ph畉n di h董n kh担ng ch畛a 動畛c s畉 b畛 c畉t c畛t C但u 4) Gi畉i: Nh畛ng k箪 t畛 trong chu畛i kh担ng b畛 thay 畛i. Ng担n ng畛 PascAL s畉 cho r畉ng chu畛i 坦 l r畛ng. C但u 5) Gi畉i: M畛t c叩ch l th棚m 16 bit nguy棚n 畛 v畛 tr鱈 b畉t 畉u chu畛i 畛 x叩c 畛nh chi畛u di chu畛i, th畛 t畛c gi畛ng STRCOPY th畛c hi畛n v嘆ng l畉p b畉ng s畛 l畉n ghi 畛 畉u chu畛i 畛 tr叩nh tr動畛ng h畛p ch辿p d動 k箪 t畛. C但u 6) Gi畉i: Ta n棚n s畛 d畛ng l畛nh REP v狸 ZF kh担ng b畛 畉nh h動畛ng khi s畛 d畛ng l畛nh MOVSW. REP MOVSW C但u 7) Gi畉i: 畛 Vd1, 1 BYTE s畉 動畛c b畛 vo AL1. 畛 Vd2, kh担ng c坦 BYTE no 動畛c b畛, v狸 l畛nh REP lm cho LODSB b畛 b畛 qua khi CX=0. L畛nh REP hi畉m khi 畛堰撮c d湛ng v畛i l畛nh LODSB v狸 n畛i dung c畛a AL b畛 ch辿p 竪 sau m畛i l畉n l畉p. C但u 8) Gi畉i: DI s畉 b畉ng 000Bh, v畛 tr鱈 th畛c th狸 sau 坦 l k箪 t畛 A C但u 9) Gi畉i: C坦 2 l畛i D嘆ng 6 ta ph畉i d湛ng JG thay v狸 JL v狸 l畛nh CMPSW so s叩nh 2 chu畛i k箪 t畛 n畉u chu畛i 鱈ch b辿 h董n chu畛i ngu畛n th狸 ta nh畉y 畉n nh達n L1 v b畛 t畛 trong list02 vo AL D嘆ng 7 l畛nh DEC n棚n thay b畉ng l畛nh SUB SI, 2. B畛i v狸 ch炭ng ta ch畛n gi叩 tr畛 16 bit, v l畛nh CMPSW 畛 cho thanh ghi SI ch畛 畉n 2 BYTE trong v畛 tr鱈 炭ng c畛a danh s叩ch C但u 10) Gi畉i: c坦 5 l畛i D嘆ng 3: k箪 t畛 動畛c t狸m th畉y ph畉i 畉t trong AL ch畛 kh担ng ph畉i DL D嘆ng 4: DI ph畉i 動畛c 畉t 畛 offset c畛a k箪 t畛 sau c湛ng trong chu畛i. C但u l畛nh 畛 d嘆ng ny c滴ng b畛 l畛i c炭 ph叩p v狸 ch炭ng ta DI chuy畛n gi叩 tr畛 8 bit sang 16 bit D嘆ng 5: CX kh担ng 動畛c g叩n gi叩 tr畛 l chi畛u di c畛a chu畛i v狸 v畉y ch炭ng ta kh担ng th畛 bi畉t l畛nh SCASB 動畛c l畉p bao nhi棚u l畉n. D嘆ng 6: L畛nh REPZ kh担ng 炭ng v狸 n坦 lm cho l畛nh SCASB ch畛 l畉p khi k箪 t畛 trong AL gi畛ng v畛i k箪 t畛 trong bigstring. Ta n棚n d湛ng l畛nh REPNZ thay th畉. D嘆ng 7: Ch炭ng ta ph畉i tng DI v狸 qu叩 tr狸nh t狸m c畛a ta ph畉i 畛 cho DI n畉m tr動畛c v畛 tr鱈 c畛a k箪 t畛 @ Ch動董ng tr狸nh 炭ng l: Lookforit: STD MOV AL, @ MOV DI, offset biglen-1 MOV CX, biglen REPNZ SCASB INC DI bigstring DB JOISD6H37DN398CX@98DF876743 biglen DW $-bigstring.
  • 20. Clb Tin h畛c, Clb Ph畉n c畛ng, Khoa CNTT DHBK TpHCM