SlideShare 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 nào 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 vào ô trống: 1 toán hạng có thể là 1 biến, 1 thanh ghi, hay ______
Câu 6)Thanh ghi nào 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 vào 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 nào đượ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 nào 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ả vào 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ờ nào của CPU được dùng để so sánh không dấu?
Câu 3) Loại cờ nào 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 vào 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 nào trong cùng segment không?
Câu 8) Lệnh JB được thực thi, vậy cờ nào đượ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 nào đượ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 nào có lệnh quay không?
Câu 4) Hai câu lệnh nào 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 vào vị trí bít thấp nhất ?
Câu 5) Lệnh nào chuyển một nhóm bit sang bên phải copy bit thấp vào trong CF và copy CF vào
vị trí bít cao?
Cậu 6) Lệnh nào 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 nào chuyển 1 nhóm bít sang bên trái copy CF vào vị trí bít thấp và copy bít cao nhất
vào CF?
Câu 8) Nhóm lệnh nào 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 vào biến val1 16bit?
Câu 24) Viết lệnh chia (-276) cho 10 và lưu kết quả vào biến val1 16bit
Câu 25) Viết chương trình chia 20000000h cho 10h và lưu trữ kết quả vào result_hi và result_lo.
Gợi ý: phải dùng chia 32 bit để tránh tràn.
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 này ở dạng
HEX sẽ là gì ?
Câu 3) Thanh ghi nào đượ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 này hay dùng thanh
ghi BX
Câu 6) Những cờ nào 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 thành
những ký tự hoa.
Câu 10)Hãy trình bày thuật toán này để chuyển từ nhị phân sang ASCII thập phân (ví dụ: số 302h)
Câu 11)Hãy trình bày 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 bày như thế nào để chuyển số ASCII thập lục phân ‘3F62’ thành 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 thành 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 dài 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 dài 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 độ dài 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 để ngăn 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 nào 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
vào 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 thành phần thấp nhất của dãy vào 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 vào 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ì tràn 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 vào 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 này 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 tăng 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ị tràn
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ị tràn
;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 này luôn được thực hiện. Lệnh JZ là lệnh
nhảy có điều kiện, lệnh này 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 này chỉ khác nhau cách viết, sự thực thi của 2 lệnh này 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 hành
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 vào 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ả vào 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ả vào 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 vào val1, không bỏ vào result như yêu cầu
Giá trị của SI và DI phải tăng 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ờ nào 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 bày 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: Làm 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ư thành ASCII, và sau đó chuyển
thương thành 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ố thành ASCII
8: Đặt số vào 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 vào, 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 dài 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 dài 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ỏ vào AL1. Ở Vd2, không có BYTE nào được bỏ, vì lệnh
REP làm 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 vào 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 này 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 dài 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ó làm 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 tăng 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

What's hot

KTMT Lý Thuyết Tổng Quát
KTMT Lý Thuyết Tổng QuátKTMT Lý Thuyết Tổng Quát
KTMT Lý Thuyết Tổng QuátDavid Nguyen
 
Ngân hàng câu hỏi kiến trúc máy tính
Ngân hàng câu hỏi kiến trúc máy tínhNgân hàng câu hỏi kiến trúc máy tính
Ngân hàng câu hỏi kiến trúc máy tínhCao Toa
 
Ngân hàng câu hỏi trắc nghiệm kiến trúc máy tính
Ngân hàng câu hỏi trắc nghiệm kiến trúc máy tínhNgân hàng câu hỏi trắc nghiệm kiến trúc máy tính
Ngân hàng câu hỏi trắc nghiệm kiến trúc máy tính
kakalaxaxa
 
Hop ngu mips
Hop ngu mipsHop ngu mips
Hop ngu mips
mster_dang
 
Kiến trúc máy tính và hợp ngữ bài 07
Kiến trúc máy tính và hợp ngữ bài 07Kiến trúc máy tính và hợp ngữ bài 07
Kiến trúc máy tính và hợp ngữ bài 07
Nhóc Nhóc
 
Kien truc bo_lenh_mips
Kien truc bo_lenh_mipsKien truc bo_lenh_mips
Kien truc bo_lenh_mips
VN Phan
 
Lap trinh assembler
Lap trinh assemblerLap trinh assembler
Lap trinh assembler
leduanmtt
 
Giao Trinh Vi Xu Ly (20 12 2008)
Giao Trinh Vi Xu Ly (20 12 2008)Giao Trinh Vi Xu Ly (20 12 2008)
Giao Trinh Vi Xu Ly (20 12 2008)Nguyen Chien
 
Bài tập kiến trúc máy tính
Bài tập kiến trúc máy tínhBài tập kiến trúc máy tính
Bài tập kiến trúc máy tínhHa Nguyen
 
Bài Giảng Vi Xử Lý ICTU
Bài Giảng Vi Xử Lý ICTUBài Giảng Vi Xử Lý ICTU
Bài Giảng Vi Xử Lý ICTU
Ngô Doãn Tình
 
Ktmt chuong 3
Ktmt chuong 3Ktmt chuong 3
Ktmt chuong 3
Tùng Tò Mò
 
Ktmt chuong 4
Ktmt chuong 4Ktmt chuong 4
Ktmt chuong 4
Tùng Tò Mò
 
Bao cao full
Bao cao fullBao cao full
Bao cao full
Brand Xanh
 
Ktmt chuong 5
Ktmt chuong 5Ktmt chuong 5
Ktmt chuong 5
Tùng Tò Mò
 
Ktmt chuong 6
Ktmt chuong 6Ktmt chuong 6
Ktmt chuong 6
Tùng Tò Mò
 
Cau hoi thi ktmt&h h
Cau hoi thi ktmt&h hCau hoi thi ktmt&h h
Cau hoi thi ktmt&h h
Đức Sky
 
249340669 bao-cao-ktmt
249340669 bao-cao-ktmt249340669 bao-cao-ktmt
249340669 bao-cao-ktmt
Đũa Mốc
 
Trac nghiem kt vi su ly 2
Trac nghiem kt vi su ly 2Trac nghiem kt vi su ly 2
Trac nghiem kt vi su ly 2Vuong Sói
 
Chuong 4. lap trinh hop ngu
Chuong 4. lap trinh hop nguChuong 4. lap trinh hop ngu
Chuong 4. lap trinh hop ngu
mituan
 
Chuong6 hoạt động ngắt
Chuong6 hoạt động ngắtChuong6 hoạt động ngắt
Chuong6 hoạt động ngắt
Đinh Công Thiện Taydo University
 

What's hot (20)

KTMT Lý Thuyết Tổng Quát
KTMT Lý Thuyết Tổng QuátKTMT Lý Thuyết Tổng Quát
KTMT Lý Thuyết Tổng Quát
 
Ngân hàng câu hỏi kiến trúc máy tính
Ngân hàng câu hỏi kiến trúc máy tínhNgân hàng câu hỏi kiến trúc máy tính
Ngân hàng câu hỏi kiến trúc máy tính
 
Ngân hàng câu hỏi trắc nghiệm kiến trúc máy tính
Ngân hàng câu hỏi trắc nghiệm kiến trúc máy tínhNgân hàng câu hỏi trắc nghiệm kiến trúc máy tính
Ngân hàng câu hỏi trắc nghiệm kiến trúc máy tính
 
Hop ngu mips
Hop ngu mipsHop ngu mips
Hop ngu mips
 
Kiến trúc máy tính và hợp ngữ bài 07
Kiến trúc máy tính và hợp ngữ bài 07Kiến trúc máy tính và hợp ngữ bài 07
Kiến trúc máy tính và hợp ngữ bài 07
 
Kien truc bo_lenh_mips
Kien truc bo_lenh_mipsKien truc bo_lenh_mips
Kien truc bo_lenh_mips
 
Lap trinh assembler
Lap trinh assemblerLap trinh assembler
Lap trinh assembler
 
Giao Trinh Vi Xu Ly (20 12 2008)
Giao Trinh Vi Xu Ly (20 12 2008)Giao Trinh Vi Xu Ly (20 12 2008)
Giao Trinh Vi Xu Ly (20 12 2008)
 
Bài tập kiến trúc máy tính
Bài tập kiến trúc máy tínhBài tập kiến trúc máy tính
Bài tập kiến trúc máy tính
 
Bài Giảng Vi Xử Lý ICTU
Bài Giảng Vi Xử Lý ICTUBài Giảng Vi Xử Lý ICTU
Bài Giảng Vi Xử Lý ICTU
 
Ktmt chuong 3
Ktmt chuong 3Ktmt chuong 3
Ktmt chuong 3
 
Ktmt chuong 4
Ktmt chuong 4Ktmt chuong 4
Ktmt chuong 4
 
Bao cao full
Bao cao fullBao cao full
Bao cao full
 
Ktmt chuong 5
Ktmt chuong 5Ktmt chuong 5
Ktmt chuong 5
 
Ktmt chuong 6
Ktmt chuong 6Ktmt chuong 6
Ktmt chuong 6
 
Cau hoi thi ktmt&h h
Cau hoi thi ktmt&h hCau hoi thi ktmt&h h
Cau hoi thi ktmt&h h
 
249340669 bao-cao-ktmt
249340669 bao-cao-ktmt249340669 bao-cao-ktmt
249340669 bao-cao-ktmt
 
Trac nghiem kt vi su ly 2
Trac nghiem kt vi su ly 2Trac nghiem kt vi su ly 2
Trac nghiem kt vi su ly 2
 
Chuong 4. lap trinh hop ngu
Chuong 4. lap trinh hop nguChuong 4. lap trinh hop ngu
Chuong 4. lap trinh hop ngu
 
Chuong6 hoạt động ngắt
Chuong6 hoạt động ngắtChuong6 hoạt động ngắt
Chuong6 hoạt động ngắt
 

Similar to On tap ctmt 8086

CHUONG-3-LẬP-TRÌNH-CHO-HỌ-VI-ĐIỀU-KHIỂN-8051.pdf
CHUONG-3-LẬP-TRÌNH-CHO-HỌ-VI-ĐIỀU-KHIỂN-8051.pdfCHUONG-3-LẬP-TRÌNH-CHO-HỌ-VI-ĐIỀU-KHIỂN-8051.pdf
CHUONG-3-LẬP-TRÌNH-CHO-HỌ-VI-ĐIỀU-KHIỂN-8051.pdf
TriuPhm15
 
Chuong10
Chuong10Chuong10
Chuong10na
 
Chuong13
Chuong13Chuong13
Chuong13na
 
Chap3 8051 microcontroller – assembly
Chap3 8051 microcontroller – assemblyChap3 8051 microcontroller – assembly
Chap3 8051 microcontroller – assemblyvietanhetc
 
Kiến trúc máy tính và hợp ngữ bài 08
Kiến trúc máy tính và hợp ngữ bài 08Kiến trúc máy tính và hợp ngữ bài 08
Kiến trúc máy tính và hợp ngữ bài 08
Nhóc Nhóc
 
đề Cương ôn tập
đề Cương ôn tậpđề Cương ôn tập
đề Cương ôn tập
huynguyenvan19
 
Đề tài giáo trình: Lập trình hệ thống và điều khiển thiết bị từ xa
Đề tài giáo trình: Lập trình hệ thống và điều khiển thiết bị từ xaĐề tài giáo trình: Lập trình hệ thống và điều khiển thiết bị từ xa
Đề tài giáo trình: Lập trình hệ thống và điều khiển thiết bị từ xa
Viết thuê trọn gói ZALO 0934573149
 
Bg hop ngu-chuong7
Bg hop ngu-chuong7Bg hop ngu-chuong7
Bg hop ngu-chuong7trungnb22
 
Ktmt c61 hop ngu assembly
Ktmt c61 hop ngu assemblyKtmt c61 hop ngu assembly
Ktmt c61 hop ngu assembly
tramhienkhcb
 
GUI C5- Timer.pdf
GUI C5- Timer.pdfGUI C5- Timer.pdf
GUI C5- Timer.pdf
loc45227
 
Slide c2 + c3
Slide   c2 + c3Slide   c2 + c3
Slide c2 + c3
Huynh MVT
 
Baitap vxl
Baitap vxlBaitap vxl
Baitap vxl
khanh449
 
Phan2 chuong5 ctrinhcon
Phan2 chuong5 ctrinhconPhan2 chuong5 ctrinhcon
Phan2 chuong5 ctrinhcon
Ly hai
 
ghsx.pdf
ghsx.pdfghsx.pdf
ghsx.pdf
TranVu132449
 
Lập trình C cho 8051
Lập trình C cho 8051Lập trình C cho 8051
Lập trình C cho 8051
chilacaiten
 

Similar to On tap ctmt 8086 (20)

CHUONG-3-LẬP-TRÌNH-CHO-HỌ-VI-ĐIỀU-KHIỂN-8051.pdf
CHUONG-3-LẬP-TRÌNH-CHO-HỌ-VI-ĐIỀU-KHIỂN-8051.pdfCHUONG-3-LẬP-TRÌNH-CHO-HỌ-VI-ĐIỀU-KHIỂN-8051.pdf
CHUONG-3-LẬP-TRÌNH-CHO-HỌ-VI-ĐIỀU-KHIỂN-8051.pdf
 
Chuong10
Chuong10Chuong10
Chuong10
 
Td 2008
Td 2008Td 2008
Td 2008
 
Chuong13
Chuong13Chuong13
Chuong13
 
Chuong 3
Chuong 3Chuong 3
Chuong 3
 
Chap3 8051 microcontroller – assembly
Chap3 8051 microcontroller – assemblyChap3 8051 microcontroller – assembly
Chap3 8051 microcontroller – assembly
 
Kiến trúc máy tính và hợp ngữ bài 08
Kiến trúc máy tính và hợp ngữ bài 08Kiến trúc máy tính và hợp ngữ bài 08
Kiến trúc máy tính và hợp ngữ bài 08
 
đề Cương ôn tập
đề Cương ôn tậpđề Cương ôn tập
đề Cương ôn tập
 
Đề tài giáo trình: Lập trình hệ thống và điều khiển thiết bị từ xa
Đề tài giáo trình: Lập trình hệ thống và điều khiển thiết bị từ xaĐề tài giáo trình: Lập trình hệ thống và điều khiển thiết bị từ xa
Đề tài giáo trình: Lập trình hệ thống và điều khiển thiết bị từ xa
 
Bg hop ngu-chuong7
Bg hop ngu-chuong7Bg hop ngu-chuong7
Bg hop ngu-chuong7
 
Ktmt c61 hop ngu assembly
Ktmt c61 hop ngu assemblyKtmt c61 hop ngu assembly
Ktmt c61 hop ngu assembly
 
GUI C5- Timer.pdf
GUI C5- Timer.pdfGUI C5- Timer.pdf
GUI C5- Timer.pdf
 
Chuong2
Chuong2Chuong2
Chuong2
 
Slide c2 + c3
Slide   c2 + c3Slide   c2 + c3
Slide c2 + c3
 
Baitap vxl
Baitap vxlBaitap vxl
Baitap vxl
 
Phan2 chuong5 ctrinhcon
Phan2 chuong5 ctrinhconPhan2 chuong5 ctrinhcon
Phan2 chuong5 ctrinhcon
 
1616 bai tap_vxl
1616 bai tap_vxl1616 bai tap_vxl
1616 bai tap_vxl
 
1616 bai tap_vxl
1616 bai tap_vxl1616 bai tap_vxl
1616 bai tap_vxl
 
ghsx.pdf
ghsx.pdfghsx.pdf
ghsx.pdf
 
Lập trình C cho 8051
Lập trình C cho 8051Lập trình C cho 8051
Lập trình C cho 8051
 

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 nào 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 vào ô trống: 1 toán hạng có thể là 1 biến, 1 thanh ghi, hay ______ Câu 6)Thanh ghi nào 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 vào 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 nào đượ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 nào 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ả vào 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ờ nào của CPU được dùng để so sánh không dấu? Câu 3) Loại cờ nào 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 vào 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 nào trong cùng segment không? Câu 8) Lệnh JB được thực thi, vậy cờ nào đượ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 nào đượ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 nào có lệnh quay không? Câu 4) Hai câu lệnh nào 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 vào vị trí bít thấp nhất ? Câu 5) Lệnh nào chuyển một nhóm bit sang bên phải copy bit thấp vào trong CF và copy CF vào vị trí bít cao? Cậu 6) Lệnh nào 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 nào chuyển 1 nhóm bít sang bên trái copy CF vào vị trí bít thấp và copy bít cao nhất vào CF? Câu 8) Nhóm lệnh nào 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 vào biến val1 16bit? Câu 24) Viết lệnh chia (-276) cho 10 và lưu kết quả vào biến val1 16bit Câu 25) Viết chương trình chia 20000000h cho 10h và lưu trữ kết quả vào result_hi và result_lo. Gợi ý: phải dùng chia 32 bit để tránh tràn. 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 này ở dạng HEX sẽ là gì ? Câu 3) Thanh ghi nào đượ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 này hay dùng thanh ghi BX Câu 6) Những cờ nào 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 thành những ký tự hoa. Câu 10)Hãy trình bày thuật toán này để chuyển từ nhị phân sang ASCII thập phân (ví dụ: số 302h) Câu 11)Hãy trình bày 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 bày như thế nào để chuyển số ASCII thập lục phân ‘3F62’ thành 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 thành 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 dài 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 dài 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 độ dài 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 để ngăn 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 nào 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 vào 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 thành phần thấp nhất của dãy vào 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 vào 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ì tràn 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 vào 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 này 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 tăng 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ị tràn 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ị tràn ;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 này luôn được thực hiện. Lệnh JZ là lệnh nhảy có điều kiện, lệnh này 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 này chỉ khác nhau cách viết, sự thực thi của 2 lệnh này 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 hành 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 vào 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ả vào 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ả vào 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 vào val1, không bỏ vào result như yêu cầu Giá trị của SI và DI phải tăng 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ờ nào 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 bày 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: Làm 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ư thành ASCII, và sau đó chuyển thương thành 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ố thành ASCII 8: Đặt số vào 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 vào, 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 dài 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 dài 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ỏ vào AL1. Ở Vd2, không có BYTE nào được bỏ, vì lệnh REP làm 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 vào 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 này 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 dài 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ó làm 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 tăng 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