Giáo trình môn học Cấu trúc máy tính

Mục tiêu:

- Trình bày lịch sử phát triển của máy tính, các thành tựu của máy tính;

- Trình bày khái niệm về thông tin;

- Mô tả được các kiến trúc máy tính;

- Biến đổi cơ bản của hệ thống số, các bảng mã thông dụng được dùng để biểu

diễn các ký tự.

1.Các mốc lịch sử phát triển công nghệ máy tính

Mục tiêu: Trình bày lịch sử phát triển của máy tính, các thành tựu của máy

tính

30 năm trước, 5150 ra đời đã phá vỡ mọi quan điểm trước đó về máy tính.

Lần đầu tiên, máy tính được nhìn nhận như một thiết bị có kích thước vừa phải,

hợp túi tiền và được công chúng chú ý nhiều hơn.

Hình 1.1: 1982: Franklin Ace 100

Đây là chiếc máy tính gây ra vụ kiện về bản quyền phần mềm đầu tiên

trong lịch sử. Acer bị Apple kiện vì vi phạm nhãn hiệu hàng hóa khi sao chép

phần cứng và phần mềm của máy tính Apple II cho Franklin Ace 100 . Trong vụ

kiện này, phần thắng thuộc về Apple.9

1982: Commodore 64

Có thể coi Commodore là máy tính dành cho hộ gia đình nổi tiếng nhất. Từ năm

1982 tới năm 1993, gần 30 triệu máy Commodore 64 đã được bán ra trên toàn

thế giới.

XT là bản nâng cấp máy tính cá nhân 5150 đầu tiên của IBM. XT có ổ cứng

trong 10 MB. Sản phẩm này của IBM sau đó nhanh chóng trở thành máy tính

tiêu chuẩn.

Hình 1.2: 1983: Apple Lisa

Lisa là máy tính tiêu dùng đầu tiên có giao diện đồ họa. Tuy nhiên, cái

giá 10.000 USD trở thành rào cản đưa sản phẩm đến với người tiêu dù.10

1984: Macintosh

Macintosh thu được thành công vang dội tới mức 30 năm đó, các sản

phẩm máy tính hiện nay của Apple vẫn được coi là kế thừa trực tiếp của

Macintosh. Macintosh cũng có giao diện đồ họa như Lisa nhưng mức giá "mềm"

hơn rất nhiều giúp sản phẩm này dễ tiêu thụ hơn.

Hình 1.3: 1990: NeXT

Máy tính NeXT được sản xuất bởi công ty riêng của Steve Jobs thành lập

sau khi ông rời Apple vào năm 1985. Tuy nhiên, chiếc máy tính này trở nên

quan trọng vì 1 lý do khác: đây là mẫu máy tính đầu tiên được Tim Berners-Lee

dùng làm máy chủ World Wide Web.

Giáo trình môn học Cấu trúc máy tính trang 1

Trang 1

Giáo trình môn học Cấu trúc máy tính trang 2

Trang 2

Giáo trình môn học Cấu trúc máy tính trang 3

Trang 3

Giáo trình môn học Cấu trúc máy tính trang 4

Trang 4

Giáo trình môn học Cấu trúc máy tính trang 5

Trang 5

Giáo trình môn học Cấu trúc máy tính trang 6

Trang 6

Giáo trình môn học Cấu trúc máy tính trang 7

Trang 7

Giáo trình môn học Cấu trúc máy tính trang 8

Trang 8

Giáo trình môn học Cấu trúc máy tính trang 9

Trang 9

Giáo trình môn học Cấu trúc máy tính trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 130 trang xuanhieu 8540
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình môn học Cấu trúc máy tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình môn học Cấu trúc máy tính

Giáo trình môn học Cấu trúc máy tính
ng 
Cách nhớ màu: 
0 1 2 3 4 5 6 7 
Đen Xanh dương Xanh lá cây cyan Đỏ Tím Nâu Xám 
- Muốn chữ sáng : cộng thêm số 8 cho màu chữ 
- Muốn nền sáng / chữ nháy cộng thêm số 8 cho màu nền 
CÔNG THỨC : 
Màu nền * 16 + màu chữ 
Ví dụ : 
Chữ A có màu xanh dương trên nền đỏ 
A : 65 đổi sang hệ thập phân là : 1000000 
Ta lấy 1000000 + 1 = 01000001 
Trong đó 0100 là nền đỏ và 0001 là chữ A màu xanh dương . 
Công thức tính địa chỉ offset của ký tự cần xuất ra màn hình 
(Dòng * 18 + cột)*2 
Ví dụ : 
Viết chương trình in chử A tại dòng 5 cột 10 có màu xanh 
dương nền đỏ 
Code segment 
Assume CS : code , DS : code 
Org 100h 
Begin 
112 
MOV AX, 0B800h 
MOV DS, AX 
MOV AL, 'A' 
MOV AH, 65 
dòng = 5 
cột = 10 
MOV BX , ( dòng * 80 + cột ) * 2 
MOV [ BX ], AX 
Code Ends 
End Begin 
3.1.1.2.Lệnh XCHG : (Exchange) 
* Cú pháp : 
XCHG , 
Toán hạng và là thanh ghi hay bộ nhớ 
* Công dụng : dùng để hoán chuyển nội dung của hai toán hạng và 
* Ghi chú : 
- Lệnh này không ảnh hưởng đến cờ hiệu 
- Không dùng lệnh này với thanh ghi đoạn 
Ví dụ : 
A DW 1234h B 
DW 3456h MOV 
AX,A XCHG AX 
, B 
* Cú pháp :PUSH 
: Có thể là một thanh ghi hay bộ nhớ 16 bit 
* Công dụng : Dùng để nạp nội dung của toán hạng vào stack 
( chồng) khi này thanh ghi SP giảm đi hai đơn vị . 
113 
3.1.1.4. Lệnh POP 
* Cú pháp : 
POP 
Ngược lại với lệnh PUSH lệnh POP sẽ lấy nội dung đỉnh STACK 
đưa vào toán hạng đỉnh khi này thanh SP tăng lên hai đơn vị. 
* Lưu ý : 
Để cất giữ các thanh ghi trong việc sử dụng lệnh PUSH , lệnh POP khi 
dùng lệnh POP ta phải lấy ngược với lệnh PUSH . 
Ví dụ : 
PUSH AX 
PUSH BX 
PUSH CX 
Ta dùng lệng POP ngược lại với PUSH 
POP CX 
POP BX 
POP AX 
3.1.1.5. Lệnh XLAT 
* Cú pháp : XLAT 
* Công dụng : 
Dùng để chuyển nội dung của một số ô nhớ (8 bit ) vào thanh ghi AL 
* Ghi chú : 
DS :BX chứa địa chỉ offset của vùng nhớ AL chứa thứ tự của ô nhớ. 
3.1.2. Nhóm lệnh tính toán số học 
3.1.2.1.Nhóm lệnh xử lý phép cộng 
3.1.2.1.1. Lệnh ADD: ( Addition ) 
Cú pháp : ADD , 
 = + < Source 
> Dest : Là thanh ghi hay bộ nhớ 
Source : Là thanh ghi hay bộ nhớ hay trực hằng 
114 
Chức năng : Dùng để cộng không nhớ giữa toán hạng Dest và toán hạng 
Source , kết quả lưu vào toán hạng Dest. 
Lệnh này ảnh hưởng đến các cờ : SF, CF , OF , AF, PF, 
ZF 3.1.2.1.2. Lệnh ADC ( Addition With Carry ) 
Cú pháp : ADC , 
 = + + CF 
Tương tự như lênh ADD , lệnh ADC thực hiện phép cộng có nhớ 
Lệnh ADC sẽ lấy toán hạng + + cờ CF, kết quả lưu vào 
toán hạng Dest , lệnh này thường dùng cho phép cộng lớn hơn 16 bít. 
3.1.2.1.3. Lệnh INC : ( Increment ) 
Cú pháp : INC 
 = + 1 
Dest : Có thể là thanh ghi hay bộ nhớ 
Lệnh này ảnh hưởng đến 5 cờ : OF , ZF , PF , AF , SF 
Ví dụ : Cho hai số A, B dạng double word chứa hai số nguyên không 
dấu , Viết chương trình cộng hai số A , B . Kết quả đưa vào một biến C , có sử 
lý trường hợp tràn số 
Code SEGMENT 
ASSUME CS : Code , DS : Code 
ORG 100h 
Begin : 
MOV AX , Word PTR A 
MOV BX , Word PTR A+2 
ADD AX , Word PTR B 
ADC BX , Word B+2 
MOV Word PTR C+2 , 0 
Int 20h 
A DD 7000F000h 
BDD 90002000h 
CDB 5 Dup( 0 ) 
115 
Code ENDS 
END Begin 
3.1.2.2. Nhóm lệnh xử lý phép trừ 
3.1.2.2.1. Lệnh SUB ( Subtract) 
* Cú pháp: SUB , 
= - Source 
:có thể là thanh ghi hay bộ nhớ 
Lệnh source sẽ lấy nội dung toán hạng dest trừ đi toán hạng source và kết quả 
lưu vào dest. 
Ví dụ : Mov AX , 1234h 
Sub AX , 0345h; 
AX = 1234h - 0345h 
Lệnh Sub ảnh hưởng đến sáu cờ 0F , CF , AF , PF , SF ,ZF 
3.1.2.2.2. Lệnh SBB ( Subtract with Borrow) 
* Cú pháp: SBB , 
 = - - CF 
Lệnh SBB sẽ lấy toán hạng - và trừ thêm cờ CF , kết 
quả lưu vào toán hạng Dest 
* Cú pháp:DEC 
 = -1 
Lệnh Dest là lệnh giảm đi 1 đơn vị . Lệnh này ảnh hưởng đến 5 Cờ và Cờ 
CF không ảnh hưởng tới. 
Lưu ý : 
Lệnh SBB được sử dụng cho trường hợp số lớn hơn 16 bít 
Ví dụ : Viết chương trình trừ 2 số :A=70002000h , 
B=90003000h,kết quả lưu vào bộ nhớ C = 5 Byte . Nếu byte cao của C =1 
thì kết quả là số âm , ngược lại là số dương. 
Code Segment 
116 
Assume CS :Code 
ORG 100h 
Begin: 
Mov AX , Word PTR A 
Mov BX , Word PTR A+2 
SUB AX , Word PTR B 
SUB BX , Word PTR B+2 
Mov Word PTR C , AX 
Mov Word PTR C+2 , BX 
ADC Word PTR C +4 
Int 20h 
A DB 70002000h B 
DB 90003000h C DB 
5 Dup ( ? ) 
Code Ends 
End Begin 
3.1.2.3. Nhóm lệnh xử lý phép nhân 
Lệnh MUL ( Multiply) 
* Cú pháp: MUL 
 có thể là thanh ghi hay bộ nhớ 8 bít hay 16 bít 
Trường hợp 1 : Nếu có độ dài là 8 bít thì lệnh MUL sẽ lấy nội 
dung của thanh ghi AL nhân với source, kết quả lưu vào thanh ghi AX. 
Trường hợp 2: Nếu source có độ dài 16 bít thì lệnh MUL sẽ lấy nội dung 
thanh ghi AX nhân với sourrce , kết quả là 32 bít :16 bít thấp lưu vào AX, 16 bit 
cao lưu vào DX. 
Ví dụ : Mov AL , 12h 
Mov BL , 10h 
MUL BL ; BL = 120h , AX = 0120h 
Mov AX ,1234h 
Mov BX , 100h 
117 
MUL BX 
3.1.2.4. Nhóm lệnh xử lý phép chia 
Lệnh DIV 
* Cú pháp:DIV 
Tương tự như phép nhân có 2 trường hợp 
Trường hợp 1:Nếu source có độ dài 8 bít thì lệnh DIV lấy nội dung thanh 
ghi AX chia cho source , thương số của phép chia được lưu trong thanh ghi AL 
và dư số được lưu trong AH. 
Trường hợp 2 :Nếu source là 16 bít thì lệnh DIV sẽ lấy nội dung trong cặp 
thanh ghi DX : AX chia cho toán hạng source , thương số được lưu trong AX , 
dư số được lưu trong DX. 
Ví dụ : Mov AX , 0234h 
Mov BL , 10h 
DIV BL ; AL = 23h , AH = 04h 
Mov AX , 1234h 
Mov DX , 0567h 
Mov BX , 100h 
DIV BX ; AX = 567h , DX = 0234h 
Ghi chú : 
Muốn in một số >= 2 kí số chúng ta chia liên tiếp những số đó cho 10 đến 
khi thương số = 0 . Sau mỗi phép chia cất dư số vào stack , sau khi thương số = 
0 muốn in ra ta lấy từng gía trị trên đỉnh Stack đưa ra màn hình. 
3.2. Các lệnh chuyển điều khiển 
3.2.1. So sánh 
* Cú pháp: CMP , 
Left : Là thanh ghi hay bộ nhớ 
Right : Là thanh ghi hay bộ nhớ hay trực hằng 
Ví dụ : 
CMP AL,0Dh 
118 
* Công dụng : Dùng để so sánh giữa toán hạng Left và toán hạng Right . Lệnh 
này Assemble sẽ lấy toán hạng Left trừ toán hạng Right kết quả được lưu trong 
các cờ mà không thay đổi nội dung của hai toán hạng trên. 
Kết quả của phép so sánh : 
a) Đối với số không dấu : 
CỜ 
ZF CF 
Left > Right 
Left = Right 
Left < Right 
0 0 
1 0 
0 1 
b) Đối Với Số Có Dấu : 
CỜ 
ZF OF SF 
Left > Right 
Left = Right 
Left < Right 
 0 0/1 0/1 
 1 0 0 
 0 1 /0 0/1 
 Ví dụ : 
Mov AX , 6000h 
CMP AX , -7000h 
 6000h - ( -7000h ) 
3.2.2. Lệnh lặp 
Lệnh Loop : 
* Cú pháp : Loop 
119 
* Công dụng : Dùng để lặp vòng. Nếu thanh ghi CX khác 0 thì lệnh Loop 
 sẽ chuyển điều khiển đến lệnh kế sau nhãn và gỉam thanh ghi CX đi 
một đơn vị . Nếu CX=0 thì lệnh nằm phía sau lệnh Loop sẽ được thực 
thi. 
Ví dụ : 
Mov AH , 01h 
Mov CX , 5 
Lặp : 
Loop lặp 
Nhóm Lệnh Lặp Có Điều Kiện : 
a. LoopE / LoopZ 
Lặp nếu CX khác 0 và ZF = 1 
b. LoopNE / LoopNZ 
Lặp nếu CX khác 0 và ZF = 0 
Ví dụ : Viết chương trình nhập từ bàn phím một chuỗi tối đa 80 kí tự . 
Sau đó tìm kí tự chữ 'a' trong chuỗi vừa nhập vào , in ra kết quả 
Code SEGMENT 
ASSUME CS : Code , DS : Code 
ORG 100h 
Begin : 
 Mov AH , 09h 
 Mov DX , Offset mess1 
 Int 21h 
 Mov DX , Offset Maxtype 
 Mov AH , 0Ah 
 Int 21h 
 Mov BX , Offset Len 
 Mov CL,[BX] 
 Mov CH,0 
 Mov BX , Offset Buffer - 1 
120 
Mov AL , 'a' 
Lặp: 
INC BX 
CMP AL,[BX] 
JE thấy 
JMP không thấy 
Thấy: 
Mov AH , 09h 
Mov DX , Offset mess2 
Int 21h 
JMP thoat 
Không thấy : 
Mov AH , 09h 
Mov DX , Offset mess3 
Int 21h 
thoat : 
Int 20h 
mess3 DB ' Không tìm thấy $' 
mess2 DB ' Đã tìm thấy $' 
mess1 DB ' Nhập một chuỗi (< 80 ) kí tự ' 
Maxtype DB 81 
Len DB 0 
Buffer DB 81 Dup( ? ) 
Code ENDS 
END Begin 
3.2.3. Lệnh nhảy 
3.2.3.1. Lệnh nhảy không điều kiện 
Cú pháp : JMP 
121 
3.2.3.2. Lệnh nhảy có điều kiện 
a) Nhóm Lệnh Nhảy Dùng Cho Số Không Dấu 
 LỆNH ĐIỀU KIỆN 
JA ( > ) 
ZF = 0 and CF = 0 
JAE (>=) 
CF=0 
JNA (<=) 
JNAE ( < ) CF=1 
JB ( < ) CF = 1 or ZF = 1 
JBE (<=) 
JNB (>=) 
JNBE ( > ) 
b) Nhóm Lệnh Nhảy Dùng Cho Số Có Dấu 
Ý NGHĨA 
Jump if above 
Jump if above or equal 
Jump if Not above 
Jump if Not above or equal 
Jump if below 
Jump if below or equal 
Jump if Not below 
Jump if Not below or equal 
 LỆNH ĐIỀU KIỆN Ý NGHĨA 
 JG ( > ) Jump if greater 
 JGE (>=) 
SF = OF and ZF = 0 
Jump if greater or equal 
JNG (<=) Jump if Not greater 
SF=OF 
JNGE ( < ) Jump if Not greater or equal 
 JL ( OF Jump if less 
 JLE ( OF or ZF = 1 Jump if less or equal 
 JNL (>=) Jump if Not less 
 JNLE ( > ) Jump if Not less or equal 
 c) Nhóm Lệnh Nhảy Dùng Cho Cả Số Có Dấu Và Không Dấu 
 LỆNH ĐIỀU KIỆN Ý NGHĨA 
 JE ( = ) ZF=1 Jump if equal 
 JNE () ZF=0 Jump if Not equal 
 122 
JZ ( = ) Jump if Zero 
JNZ () Jump if Not Zero 
JC CF=1 Jump if carry 
JNC CF=0 Jump if Not carry 
JCXZ CX=0 Jump if CX Zero 
4. Ngăn xếp và các thủ tục 
- Mục tiêu: Trình bày được ngăn xếp; 
- Viết chương trình con và cách truyền tham số cho chương trình 
con. 
4.1. Ngăn xếp 
Đoạn ngăn xếp (stack segment) trong chương trình được dùng để cất giữ 
tạm thời số liệu và địa chỉ . Trong phần này chúng ta sẽ xem xét cách tổ chức 
stack và sử dụng nó để thực hiện các thủ tục (procedure). 
Ngăn xếp là cấu trúc dữ liệu 1 chiều. Điều đó có nghĩa là số liệu được đưa 
vào và lấy ra khỏi stack tại đầu cuối của stack theo nguyên tắc LIFO ( last in 
first out) . Vị trí tại đó số liệu được đưa vào hay lấy ra gọi là đỉnh của ngăn xếp 
(top of stack) .Có thể hình dung satck như một chồng đĩa. Đĩa đưa vào sau cùng 
nằm tại đỉnh của chồng đĩa. Khi lấy ra, đĩa trên cùng sẽ được lấy ra trước. Một 
chương trình phải dành ra một khối nhớ cho ngăn xếp. Chúng ta dùng chỉ dẫn 
.STACK 100h để khai báo kích thước vùng stack là 256 bytes . Khi chương 
trình được dịch và nạp vào bộ nhớ thanh ghi SS ( stack segment) sẽ chứa địa chỉ 
đoạn stack . Còn SP ( stack pointer) chứa địa chỉ đỉnh của ngăn xếp . Trong khai 
báo stack 100h trên đây , SP nhận giá trị 100h . Điều này có nghĩa là stack trống 
rỗng (empty) như hình 6.1. 
Hình 7.1: Stack empty 
123 
Lệnh PUSH 
Để thêm một từ mới vào stack chúng ta dùng lệnh : 
PUSH nguồn; đưa một thanh ghi hoặc từ nhớ 16 bit vào stack 
Ví dụ PUSH AX . Khi lệnh này được thực hiện thì : 
· SP giảm đi 2 
· một bản copy của toán hạng nguồn đưọc chuyển đến địa chỉ SS:SP còn 
toán hạng nguồn không thay đổi . 
Lệnh POP 
Để lấy số liệu tại đỉnh stack ra khỏi stack ,chúng ta dùng lệnh : 
POP đích ; lấy số liệu tại đỉnh stack ra đích 
Đích có thể là 1 thanh ghi hoặc từ nhớ 16 bit . Ví dụ : 
POP BX ; Lấy số liệu trong stack ra thanh ghi BX . 
Khi thực hiện lệnh POP : 
· nội dung của đỉnh stack ( địa chỉ SS:SP) được di chuyển đến đích . 
· SP tăng 2 
4.2. Các thủ tục 
Trong các ngôn ngữ cấp cao người ta dùng thủ tục để giải các bài toán 
con , và chúng ta cũng làm như vậy trong hợp ngữ. Như vậy là một chương trình 
hợp ngữ có thể được xây dựng bằng các thủ tục . 
Một thủ tục gọi là thủ tục chính sẽ chứa nội dung chủ yếu của chương trình. Để 
thực hiện một công việc nào đó , thủ tục chính gọi ( CALL) một thủ tục con. 
Thủ tục con cũng có thể gọi một thủ tục con khác .Khi một thủ tục gọi một thủ 
tục khác, điều khiển được chuyển tới ( controltransfer) thủ tục được gọi và các 
124 
lệnh của thủ tục được gọi sẽ được thi hành. Sau khi thi hành hết các lệnh trong 
nó, thủ tục được gọi sẽ trả điều khiển (return control) cho thủ tục gọi nó. Cú 
pháp của lệnh tạo một thủ tục: 
tên thủ tục PROC kiểu gọi thủ tục 
; các lệnh 
RET 
tên thủ tục ENDP 
 tên thủ tục do người dùng định nghĩa.

 kiểu gọi thủ tục có thể là NEAR ( có thể không khai báo )
hoặc FAR . 
 NEAR có nghĩa là thủ tục được gọi nằm cùng một đoạn với 
thủ tục gọi . FAR có nghĩa là thủ tục được gọi và thủ tục gọi nằm khác đọan.
 Lệnh RET trả điều khiển cho thủ tục gọi . Tất cả các thủ tục 
phải kết thúc
 bởi RET trừ thủ tục chính .
Ví dụ: 
Viết chương trình tính tích của 2 số dương A và B bằng thuật toán cộng ( ADD) 
và dịch ( SHIFT ) 
Thuật toán như sau : 
Product = 0 
REPEAT 
IF lsb of B is 1 
THEN 
product=product+A 
END_IF 
shift left A 
shift right B 
UNTIL B=0 
Viết chương trình 
.MODEL SMALL 
125 
.STACK 100H 
.CODE 
MAIN PROC 
; thực hiện bằng DEBUG . Đặt A = AX , B=BX 
CALL MULTIPLY 
;DX chứa kết qủa 
MOV AH,4CH 
INT 21H 
MAIN ENDP 
MULTIPY PROC 
; input : AX=A , BX=B , AX và BX có giá trị trong khoảng 0...FFH 
; output : DX= kết qủa 
; Nếu lsb của B =1 
TEST BX,1 ;lsb=1? 
JZ END_IF ; không , nhảy đến END_IF 
; thì 
ADD DX,AX ; DX=DX+AX 
END_IF : 
SHL AX,1 ; dịch trái AX 1 bit 
SHR BX,1 ;dịch phải BX 1 bit 
; cho đến khi BX=0 
JNZ REPEAT ; nếu BX chưa bằng 0 thì lặp 
POP BX ; lấy lại BX 
POP AX ; lấy lại AX 
RET ; trả điều khiển cho chương trình chính 
MULTIPLY ENDP 
126 
END MAIN 
CÂU HỎI VÀ BÀI TẬP 
Bài 1: Giải thích các câu lệnh sau 
a/ MOV AL,5Bh 
MOV BL,0ADh 
ADD AL,BL 
b/ MOV AX,170Fh 
MOV BX,80EBh 
ADD AX,BX 
c/ 
MOV AL,41h 
MOV BL,50h 
CMP AL,BL 
Bài 2 :Viết chương trình hiển thị ra màn hình một hình chữ nhật gồm các kí tự ' 
* ' 
Bài 3 :Viết chương trình hiển thị chuỗi ' * * * * * * * * ' ra màn hình 
Bài 4 : Viết chương trình hiển thị ra màn hình 26 chữ cái(A->Z) và có 
khỏang trắng ở giữa 
Bài 5 : Viết chương trình hiển thị chuỗi " Hello , How are you " ra màn 
hình Bài 6 : Viết chương trình hiển thị ra màn hình 26 chữ cái(A->Z) không 
có khỏang trắng ở giữa 
Bài 7 : Viết chương trình hiển thị ra màn hình chuỗi '012345678' 
Bài 8:Viết chương trình hiển thị ra màn hình một hình vuông gồm các kí tự ' * ' 
bên trong. 
Bài 9 :Viết chương trình nhập vào 2 số và cho biết số trước lớn hớn , nhỏ 
hơn hay bằng số sau 
127 
Bài 10 :Viết chương trình nhập vào một chuỗi ( <=80) kí tự , Viết chương trình 
nhập vào một kí tự . Cho biết kí tự vừa nhập có trong chuỗi trước hay không 
Bài 11 : Viết chương trình nhập vào một chuỗi và hiển thị chuỗi đó ra màn hinh 
ở dạng chữ hoa 
Bài 12 : Viết chương trình nhập vào một kí tự thường và hiển thị kí tự vừa 
nhập ra màn hình ở dạng chữ hoa 
Bài 13 : Viết chương trình in ra ngày sản xuất BIOS 
Bài 14 : Viết chương trình nhập vào 2 kí tự . Cho biết kí tự đầu lớn hơn , nhỏ 
hơn hay bằng kí tự sau 
Bài15: Viết chương trình đảo ngược chuỗi số '12345678' 
Bài 16 : Viết chương trình nhập vào 3 kí tự cho biết kí tự nào là kí tự lớn nhất 
Bài 17 : Viết chương trình nhập vào 1 kí tự , cho biết kí tự đó là kí tự 
thường ,hoa hay là kí tự đặc biệt 
TÀI LIỆU THAM KHẢO 
[1]. Nguyễn Đình Việt. Kiến trúc máy tính. Nhà xuất bản Đại học quốc Gia Hà 
Nội. 2007. 
[2]. Msc. Võ Văn Chín, Th.s. Nguyễn Hồng Vân. Giáo trình kiến trúc máy 
tính. Khoa CNTT Đại học cần thơ. 2009 
[3]. Tống Văn On, Hoàng Đức Hải. Hợp ngữ & Lập trình ứng dụng. Nhà xuất 
bản lao động-xã hội. 2004 
128 

File đính kèm:

  • pdfgiao_trinh_mon_hoc_cau_truc_may_tinh.pdf