Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 62 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
62
Dung lượng
3,77 MB
Nội dung
66 CHƯƠNG 4: BỘ NHỚ Mã chương: MH09-04 Mục tiêu - Mơ tả cấp nhớ; Trình bày cách thức vận hành loại nhớ; Đánh giá hiệu hoạt động loại nhớ; Thực thao tác an toàn với máy tính 1.Phân loại nhớ Mục tiêu: Hiểu cấp nhớ cách thức vận hành 1.1 Phân loại nhớ theo phương pháp truy nhập Bộ nhớ chứa chương trình, nghĩa chứa lệnh số liệu Người ta phân biệt nhớ theo truy nhập sau: - Bộ nhớ truy nhập ngẫy nhiên: Đây loại nhớ mà ta muốn truy nhập đến phần tử nó, khơng cần phải truy nhập qua tất phần tử đứng trước Chính mà thời gian truy nhập đến phần tử nhớ trường hợp khơng phụ thuộc vào vị trí phần tử nhớ (đĩa cứng, ) - Bộ nhớ truy nhập tuần tự: Đây loại nhớ mà muốn truy nhập đến phần tử phải truy nhập qua tất phần tử nhớ trước 1.2.Phân loại theo đọc ghi nhớ Tùy theo chức mà nhớ có khả đọc/ghi thơng tin khác - Có loại nhớ đọc thông tin từ chúng mà ghi thông tin chúng thường gọi ROM (Read Only Memory) - Có loại nhớ vừa đọc thơng tin lại vừa ghi thơng tin chúng, thường gọi RAM (Random Access Memory) 67 Các loại nhớ bán dẫn Mục tiêu: Nắm đặc điểm loại nhớ bán dẫn Biết tổ chức chíp nhớ cách tăng dung lượng nhớ 2.1.ROM (Read Only Memory) 2.1.1 Đặc điểm ROM Bộ nhớ đọc ROM chế tạo công nghệ bán dẫn Bộ nhớ mà phần tử nhớ có trạng thái cố định, thơng tin lưu giữ ROM cố định chí khơng bị điện Chương trình ROM viết vào lúc chế tạo ROM nhớ không khả biến Lưu trữ thơng tin sau: Thư viện chương trình Các chương trình điều khiển hệ thống (BIOS) Các bảng chức Vi chương trình 2.1.2 Các loại ROM ROM mặt nạ: thông tin ghi sản xuất, đắt PROM (Programmable ROM): Cần thiết bị chuyên dụng để ghi chương trình ghi lần EPROM (Erasable PROM): Cần thiết bị chuyên dụng để ghi chương trình ghi nhiều lần Trước ghi lại, xóa tia cực tím EEPROM (Electrically Erasable PROM): Có thể ghi theo byte, xóa điện Flashmemory (Bộ nhớ cực nhanh): Ghi theo khối, xóa điện 68 2.2.RAM (Random Access Memory) 2.2.1 Đặc điểm RAM loại nhớ máy tính RAM gọi nhớ truy cập ngẫu nhiên có đặc tính: thời gian thực thao tác đọc ghi ô nhớ nhau, cho dù vị trí nhớ Mỗi nhớ RAM có địa Thông thường, ô nhớ byte (8 bit); nhiên hệ thống lại đọc hay ghi vào nhiều byte (2, 4, byte) Bộ nhớ (RAM) đặc trưng dung lượng tổ chức (số nhớ số bit cho ô nhớ), thời gian thâm nhập (thời gian từ lúc đưa địa ô nhớ đến lúc đọc nội dung nhớ đó) chu kỳ nhớ (thời gian hai lần liên tiếp thâm nhập nhớ) Mục đích: Máy vi tính sử dụng RAM để lưu trữ mã chương trình liệu suốt trình thực thi Đặc trưng tiêu biểu RAM truy cập vào vị trí khác nhớ hồn tất khoảng thời gian tương tự, ngược lại với số kỹ thuật khác, địi hỏi phải có khoảng thời gian trì hỗn định 2.2.2 Các loại RAM Tuỳ theo công nghệ chế tạo, người ta phân biệt RAM tĩnh (SRAM: Static RAM) RAM động (Dynamic RAM) RAM tĩnh chế tạo theo công nghệ ECL (CMOS BiCMOS) Mỗi bit nhớ gồm có cổng logic với độ transistor MOS, việc nhớ liệu tồn nhớ cung cấp điện SRAM nhớ nhanh, việc đọc không làm huỷ nội dung ô nhớ thời gian thâm nhập chu kỳ nhớ RAM động dùng kỹ thuật MOS Mỗi bit nhớ gồm có transistor tụ điện Cũng SRAM, việc nhớ liệu tồn nhớ cung cấp điện Việc ghi nhớ dựa vào việc trì điện tích nạp vào tụ điện việc đọc bit nhớ làm nội dung bit bị huỷ Vậy sau lần đọc ô nhớ, phận điều khiển nhớ phải viết lại nhớ nội dung vừa đọc chu kỳ nhớ động gấp đơi thời gian thâm nhập ô nhớ Việc lưu giữ thông tin 69 bit nhớ tạm thời tụ điện phóng hết điện tích nạp vào phải làm tươi nhớ sau 2µs Làm tươi nhớ đọc ô nhớ viết lại nội dung vào lại nhớ Việc làm tươi thực với tất ô nhớ nhớ Việc làm tươi nhớ thực tự động vi mạch nhớ Bộ nhớ DRAM chậm rẻ tiền SRAM Hình 4.1: SRAM DRAM Các loại DRAM SDRAM (Viết tắt từ Synchronous Dynamic RAM) gọi DRAM đồng SDRAM gồm phân loại: SDR, DDR, DDR2 SDR SDRAM (Single Data Rate SDRAM), thường giới chuyên môn gọi tắt "SDR" Có 168 chân, có tốc độ 33Mhz, 66Mhz, 100Mhz 133Mhz Được dùng máy vi tính cũ, bus speed chạy vận tốc với clock speed memory chip, lỗi thời DDR SDRAM (Double Data Rate SDRAM), thường giới chuyên môn gọi tắt "DDR" Có 184 chân DDR SDRAM cải tiến nhớ SDR với tốc độ truyền tải gấp đôi SDR (200Mhz, 266Mhz, 333Mhz, 400Mhz, ) nhờ vào việc truyền tải hai lần chu kỳ nhớ Đã thay DDR2 Hầu hết mainboard đời hỗ trợ DDR (và không hỗ trợ SDRAM) 70 DDR2 SDRAM (Double Data Rate SDRAM), Thường giới chuyên môn gọi tắt "DDR2" Là hệ thứ hai DDR với 240 chân, lợi lớn so với DDR có bus speed cao gấp đơi clock speed RDRAM (Viết tắt từ Rambus Dynamic RAM), thường giới chuyên môn gọi tắt "Rambus" Đây loại DRAM thiết kế kỹ thuật hoàn toàn so với kỹ thuật SDRAM RDRAM hoạt động đồng theo hệ thống lặp truyền liệu theo hướng Một kênh nhớ RDRAM hỗ trợ đến 32 chip DRAM Mỗi chip ghép nối module gọi RIMM (Rambus Inline Memory Module) việc truyền liệu thực mạch điều khiển chip riêng biệt không truyền chip với Bus nhớ RDRAM đường dẫn liên tục qua chip module bus, module có chân vào đầu đối diện Do đó, khe cắm không chứa RIMM phải gắn module liên tục để đảm bảo đường truyền nối liền Tốc độ Rambus đạt từ 400-800 MHz Rambus không nhanh SDRAM bao lại đắt nhiều nên có người dùng RDRAM phải cắm thành cặp khe trống phải cắm RAM giả (còn gọi C-RIMM) cho đủ 2.3 Thiết kế môdun nhớ bán dẫn - Tổ chức chíp nhớ Hình 4.2 Tổ chức chíp nhớ Các tín hiệu chíp nhớ Các đường địa chỉ:An-1->A0:có 2n từ nhớ Các đường liệu:Dn-1 ->D0: độ dài từ nhớ m bit Dung lượng chip nhớ: 71 2n x m bit Các đường điều khiển: Tín hiệu chọn chip CS (Chip Select) Tín hiệu điều khiển đọc OE(output Enable) Tín hiệu điều khiển ghi wE(write enable) Dung lượng chip nhớ=2 n xm bit Cần thiết kế để tăng dung lượng: Thiết kế tăng độ dài từ nhớ Thiết kế tăng số lượng từ nhớ Thiết kế kết hợp * Tăng độ dài từ nhớ Ví dụ : Cho chip nhớ SRAM 4K x bit Thiết kế môdun nhớ 4K x bit Giải: Dung lượng chip nhớ=212 x bit Chip nhớ có 12 chân địa chỉ, chân liệu Mơdun nhớ cần có:12 chân địa chỉ, chân liệu * Tăng số lượng từ nhớ Ví dụ: Cho chip nhớ SRAM 4K x8 bit Thiết kế môdun nhớ 8K x bit Giải: Dung lượng chip nhớ = 212 x bit Chip nhớ có:12 chân địa chỉ, chân liệu Dung lượng môdun nhớ:213 x bit 13 chân địa chỉ, chân liệu Hệ thống nhớ phân cấp Mục tiêu: Nhận xét cấp nhớ dung lượng, tốc độ Các đặc tính lượng thơng tin lưu trữ, thời gian thâm nhập nhớ, chu kỳ nhớ, giá tiền bit nhớ khiến ta phải phân biệt cấp nhớ: nhớ nhanh với dung lượng đến nhớ chậm với dung lượng lớn B CPU VI X T p than B nh LÝ B nh B nh Hình 4.3: Các cấp nhớ B nh B nh 72 Ta nhận thấy từ trái sang phải: dung lượng tăng dần, tốc độ giảm dần, giá thành/1bit giảm dần Máy tính lưu trữ liệu theo cấu trúc phân cấp tương tự Khi ứng dụng khởi động, liệu lệnh chuyển từ đĩa cứng tốc độ chậm sang nhớ (RAM động hay DRAM), nơi mà CPU truy xuất nhanh DRAM hoạt động vùng đệm cho đĩa Mặc dù DRAM nhanh đĩa cứng, cịn bị hạn chế Vì thế, liệu thường dùng đến chuyển lên loại nhớ nhanh gọi nhớ đệm cấp (L2) Loại nhớ nằm RAM tĩnh cạnh bên CPU, CPU loại thường kết hợp nhớ đệm L2 chip xử lý Ở cấp cao nhất, thơng tin thường sử dụng nhất, ví dụ lệnh vòng lặp thực thi lặp lặp lại, lưu trực tiếp vùng đặc biệt xử lý gọi nhớ đệm cấp (L1) Đây loại nhớ nhanh Bộ nhớ đệm L2 nằm CPU có tốc độ truy xuất nhanh gấp bốn lần so với trường hợp nằm chip riêng Khi xử lý cần thực thi câu lệnh đó, tìm kiếm ghi liệu riêng Nếu liệu cần thiết khơng có đó, tìm nhớ đệm L1 sau L2, nhớ đệm khơng có gọi đến nhớ RAM Cuối cùng, liệu khơng có hệ thống phải lấy liệu từ đĩa cứng Các đặc tính cấp nhớ dẫn đến hai mức là: mức cache nhớ mức nhớ ảo (bao gồm nhớ không gian cấp phát đĩa cứng) Cách tổ chức suốt người sử dụng Người sử dụng thấy không gian định vị ô nhớ, độc lập với vị trí thực tế lệnh liệu cần thâm nhập 73 Hình 4.4: Hai mức nhớ Các cấp nhớ giúp ích cho người lập trình muốn có nhớ thật nhanh với chi phí đầu tư giới hạn Vì nhớ nhanh đắt tiền nên nhớ tổ chức thành nhiều cấp, cấp có dung lượng nhanh đắt tiền cấp có dung lượng cao Mục tiêu việc thiết lập cấp nhớ người dùng có hệ thống nhớ rẻ tiền cấp nhớ thấp gần nhanh cấp nhớ cao Các cấp nhớ thường lồng vào Mọi liệu cấp gặp lại cấp thấp tiếp tục gặp lại cấp thấp Chúng ta có nhận xét rằng, cấp nhớ có dung lượng lớn cấp mình, ánh xạ phần địa nhớ vào địa nhớ cấp trực tiếp có tốc độ nhanh hơn, cấp nhớ phải có chế quản lý kiểm tra địa ánh xạ Kết nối nhớ với xử lý Mục tiêu: Hiểu nguyên tắc kết nối nhớ với xử lý,cách thức thâm nhập nhớ Cache nhớ nhanh, chứa lệnh liệu thường xuyên dùng đến Việc lựa chọn lệnh liệu cần đặt vào cache dựa vào nguyên tắc sau đây: Một chương trình 90% thời gian thi hành lệnh để thi hành 10% số lệnh chương trình 74 Nguyên tắc áp dụng cho việc thâm nhập liệu, hiệu nghiệm việc thâm nhập lệnh Như có hai nguyên tắc: nguyên tắc không gian nguyên tắc thời gian Nguyên tắc thời gian: cho biết ô nhớ hệ thống xử lý thâm nhập có khả thâm nhập tương lai gần Thật vậy, chương trình cấu tạo với phần phần thi hành nhiều phần phụ dùng để xử lý trường hợp ngoại lệ Cịn số liệu ln có cấu trúc thơng thường có phần số liệu thâm nhập nhiều mà Nguyên tắc không gian: cho biết, xử lý thâm nhập vào ô nhớ có nhiều khả thâm nhập vào nhớ có địa lệnh xếp thành chuỗi có thứ tự Tổ chức cấp nhớ cho lệnh liệu thường dùng nằm nhớ cache, điều làm tăng hiệu máy tính cách đáng kể 5.Các tổ chức cache Mục tiêu: Hiểu đặc điểm nhớ cache,tổ chức nhớ cache Vận dụng phương pháp ánh xạ địa 5.1 Cache (bộ nhớ đệm nhanh) - Cache có tốc độ nhanh nhớ - Cache đặt CPU nhớ - Nhằm tăng tốc độ truy cập nhớ CPU - Cache đặt chip CPU CPU Cache B nh Truy n theo Truy n theo Hình 4.5: Bộ nhớ Cache + Ví dụ thao tác cache: 75 CPU yêu cầu nội dung ngăn nhớ CPU kiểm tra cache với liệu Nếu có, CPU nhận liệu từ cache (nhanh) Nếu không có, đọc block nhớ chứa liệu từ nhớ vào cache Tiếp chuyển liệu từ cache vào CPU 5.2 Tổ chức cache + Cấu trúc chung cache / nhớ Hìn 4.6 Cấu trúc cache nhớ Bộ nhớ có 2N byte nhớ - Bộ nhớ cache chia thành khối có kích thước - Bộ nhớ chính: B0, B1, B2, , Bp-1 (p Blocks) - Bộ nhớ cache: L0, L1, L2, , Lm-1 (m Lines) - Kích thước Block = 8, 16, 32, 64, 128 byte Một số Block nhớ nạp vào Line cache Nội dung Tag (thẻ nhớ) cho biết Block nhớ chứa Line Khi CPU truy nhập (đọc/ghi) từ nhớ, có hai khả xảy ra: - Từ nhớ có cache (cache hit) - Từ nhớ khơng có cache (cache miss) 113 3.1.2 Nhóm lệnh tính tố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 < Dest > , < Source > < Dest > = < Dest > + < Source > Dest : Là ghi hay nhớ Source : Là ghi hay nhớ hay trực Chức : Dùng để cộng khơng nhớ tốn hạng Dest tốn hạng Source , kết lưu vào toán hạng Dest Lệnh ảnh hưởng đến cờ : SF, CF , OF , AF, PF, ZF 3.1.2.1.2 Lệnh ADC ( Addition With Carry ) Cú pháp : ADC < Dest > , < Source > < Dest > = < Dest > + < Source > + CF Tương tự lênh ADD , lệnh ADC thực phép cộng có nhớ Lệnh ADC lấy tốn hạng < Dest > + < Source> + cờ CF, kết lưu vào toán hạng Dest , lệnh thường dùng cho phép cộng lớn 16 bít 3.1.2.1.3 Lệnh INC : ( Increment ) Cú pháp : INC < Dest > < Dest > = < Dest > + Dest : Có thể ghi hay nhớ Lệnh ảnh hưởng đến cờ : OF , ZF , PF , AF , SF Ví dụ : Cho hai số A, B dạng double word chứa hai số ngun khơng dấu , Viết chương trình cộng hai số A , B Kết đưa vào 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 114 Code ADD AX , Word PTR B ADC BX , Word B+2 MOV Word Int 20h PTR C+2 , A DD 7000F000h B DD 90002000h C DB Dup( ) 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 < dest>, < Dest >= - Source :có thể ghi hay nhớ Lệnh source lấy nội dung toán hạng dest trừ toán hạng source kết 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 < dest > , < source > < Dest > = < Dest > - < Source > - CF Lệnh SBB lấy toán hạng < Dest > - < Source > trừ thêm cờ CF , kết lưu vào toán hạng Dest 3.1.2.2.3 Lệnh DEC ( Decrement) * Cú pháp: DEC < Dest > < Dest > = < Dest > -1 115 Lệnh Dest lệnh giảm đơn vị Lệnh ảnh hưởng đến Cờ Cờ CF không ảnh hưởng tới Lưu ý : Lệnh SBB sử dụng cho trường hợp số lớn 16 bít Ví dụ : Viết chương trình trừ số :A=70002000h , B=90003000h,kết lưu vào nhớ C = Byte Nếu byte cao C =1 kết số âm , ngược lại số dương Code Segment Assume CS :Code ORG 100h Mov AX , Word PTR Mov BX , Word Begin: A 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 A Code 20h DB 70002000h B DB 90003000h C DB Dup ( ? ) 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 < Source> < Source> ghi hay nhớ bít hay 16 bít Trường hợp : Nếu < Source > có độ dài bít lệnh MUL lấy nội dung ghi AL nhân với source, kết lưu vào ghi AX 116 Trường hợp 2: Nếu source có độ dài 16 bít lệnh MUL lấy nội dung ghi AX nhân với sourrce , kết 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 MUL BX 3.1.2.4 Nhóm lệnh xử lý phép chia Lệnh DIV * Cú pháp: DIV < Source > Tương tự phép nhân < source > có trường hợp Trường hợp 1:Nếu source có độ dài bít lệnh DIV lấy nội dung ghi AX chia cho source , thương số phép chia lưu ghi AL dư số lưu AH Trường hợp :Nếu source 16 bít lệnh DIV lấy nội dung cặp ghi DX : AX chia cho toán hạng source , thương số lưu AX , dư số lưu 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 : Muốn in số >= kí số chia liên tiếp số cho 10 đến thương số = Sau phép chia cất dư số vào stack , sau thương số = muốn in ta lấy gía trị đỉnh Stack đưa hình 117 3.2 Các lệnh chuyển điều khiển 3.2.1 So sánh * Cú pháp: CMP < Left >, < Right > Left : Là ghi hay nhớ Right : Là ghi hay nhớ hay trực Ví dụ : CMP AL,0Dh * Cơng dụng : Dùng để so sánh toán hạng Left toán hạng Right Lệnh Assemble lấy toán hạng Left trừ toán hạng Right kết lưu cờ mà không thay đổi nội dung hai toán hạng Kết 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 b) Đối Với Số Có Dấu : CỜ ZF OF SF Left > Right Left = Right Left < Right 0/1 0/1 118 /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 * Công dụng : Dùng để lặp vòng Nếu ghi CX khác lệnh Loop chuyển điều khiển đến lệnh kế sau nhãn gỉam ghi CX đơn vị Nếu CX=0 lệnh nằm phía sau lệnh Loop thực thi Ví dụ : Mov AH , 01h Mov CX , Lặp : Loop lặp Nhóm Lệnh Lặp Có Điều Kiện : a LoopE / LoopZ Lặp CX khác ZF = b LoopNE / LoopNZ < Nhãn > Lặp CX khác ZF = Ví dụ : Viết chương trình nhập từ bàn phím chuỗi tối đa 80 kí tự Sau tìm kí tự chữ 'a' chuỗi vừa nhập vào , in kết Code SEGMENT ASSUME ORG CS : Code , DS : Code 100h Begin : Mov AH , 09h 119 Mov DX , Offset mess1 Int 21h Mov DX , Offset Maxtype Mov AH , 0Ah Int 21h Mov BX , Offset Len Mov CL , [ BX ] Mov CH , Mov BX , Offset Buffer - Mov AL , 'a' Lặp: INC BX CMP AL , [ BX ] LoopNE JE Lặp thấy JMP không thấy Thấy: Mov AH , 09h Mov DX , Offset mess2 Int 21h JMP thoat Mov AH , 09h Mov DX , Offset mess3 Int 21h Không thấy : thoat : Int 20h mess3 DB ' Khơng tìm thấy $' mess2 DB ' Đã tìm thấy $' mess1 DB ' Nhập chuỗi (< 80 ) kí tự ' 120 Maxtype DB 81 Len DB 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 < Nhãn > 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 JA ĐIỀU KIỆN (>) JAE (>=) JNA (=) JNG () Jump if Not Zero JC CF = Jump if carry JNC CF = Jump if Not carry JCXZ CX = Jump if CX Zero Ngăn xếp thủ tục - Mục tiêu: Trình bày ngăn xếp; - Viết chương trình cách truyền tham số cho chương trình 4.1 Ngăn xếp Đoạn ngăn xếp (stack segment) chương trình dùng để cất giữ tạm thời số liệu địa Trong phần xem xét cách tổ chức stack sử dụng để thực thủ tục (procedure) Ngăn xếp cấu trúc liệu chiều Điều có nghĩa số liệu đưa vào lấy khỏi stack đầu cuối stack theo nguyên tắc LIFO ( last in first out) Vị trí số liệu đưa vào hay lấy gọi đỉnh ngăn xếp (top of stack) Có thể hình dung satck chồng đĩa Đĩa đưa vào sau nằm đỉnh chồng đĩa Khi lấy ra, đĩa lấy trước Một chương trình phải dành khối nhớ cho ngăn xếp Chúng ta dùng dẫn STACK 100h để khai báo kích thước vùng stack 256 bytes Khi chương trình dịch nạp vào nhớ ghi SS ( stack segment) chứa địa đoạn stack Còn SP ( stack pointer) chứa địa đỉnh ngăn xếp Trong khai 122 báo stack 100h , SP nhận giá trị 100h Điều có nghĩa stack trống rỗng (empty) hình 6.1 Hình 7.1: Stack empty Lệnh PUSH Để thêm từ vào stack dùng lệnh : PUSH nguồn; đưa ghi từ nhớ 16 bit vào stack Ví dụ PUSH AX Khi lệnh thực : · SP giảm · copy toán hạng nguồn đưọc chuyển đến địa SS:SP cịn tốn hạng nguồn khơng thay đổi Lệnh POP Để lấy số liệu đỉnh stack khỏi stack ,chúng ta dùng lệnh : POP đích ; lấy số liệu đỉnh stack đích Đích ghi từ nhớ 16 bit Ví dụ : POP BX ; Lấy số liệu stack ghi BX Khi thực lệnh POP : · nội dung đỉnh stack ( địa SS:SP) di chuyển đến đích · SP tăng 123 4.2 Các thủ tục Trong ngôn ngữ cấp cao người ta dùng thủ tục để giải toán , làm hợp ngữ Như chương trình hợp ngữ xây dựng thủ tục Một thủ tục gọi thủ tục chứa nội dung chủ yếu chương trình Để thực cơng việc , thủ tục gọi ( CALL) thủ tục Thủ tục gọi thủ tục khác Khi thủ tục gọi thủ tục khác, điều khiển chuyển tới ( controltransfer) thủ tục gọi lệnh thủ tục gọi thi hành Sau thi hành hết lệnh nó, thủ tục gọi trả điều khiển (return control) cho thủ tục gọi Cú pháp lệnh tạo thủ tục: tên thủ tục PROC kiểu gọi thủ tục ; lệnh RET tên thủ tục ENDP tên thủ tục người dùng định nghĩa kiểu gọi thủ tục NEAR ( khơng khai báo ) NEAR có nghĩa thủ tục gọi nằm đoạn với FAR thủ tục gọi FAR có nghĩa thủ tục gọi 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 thủ tục phải kết thúc RET trừ thủ tục Ví dụ: Viết chương trình tính tích số dương A B thuật toán cộng ( ADD) dịch ( SHIFT ) Thuật toán sau : Product = REPEAT IF lsb of B is 124 THEN product=product+A END_IF shift left A shift right B UNTIL B=0 Viết chương trình MODEL SMALL STACK 100H CODE MAIN PROC ; thực 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 BX có giá trị khoảng FFH ; output : DX= kết qủa PUSH AX PUSH BX XOR DX,DX REPEAT: ; Nếu lsb B =1 TEST BX,1 ;lsb=1? JZ END_IF ; không , nhảy đến END_IF ; ADD DX,AX ; DX=DX+AX END_IF : 125 SHL AX,1 ; dịch trái AX bit SHR BX,1 ;dịch phải BX bit ; BX=0 JNZ REPEAT ; BX chưa 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 MULTIPLY ENDP END MAIN CÂU HỎI VÀ BÀI TẬP Bài 1: Giải thích 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 :Viết chương trình hiển thị hình hình chữ nhật gồm kí tự ' *' Bài :Viết chương trình hiển thị chuỗi ' * * * * * * * * ' hình Bài : Viết chương trình hiển thị hình 26 chữ cái(A->Z) có khỏang trắng Bài : Viết chương trình hiển thị chuỗi " Hello , How are you " hình 126 Bài : Viết chương trình hiển thị hình 26 chữ cái(A->Z) khơng có khỏang trắng Bài : Viết chương trình hiển thị hình chuỗi '012345678' Bài 8:Viết chương trình hiển thị hình hình vng gồm kí tự ' * ' bên Bài :Viết chương trình nhập vào số cho biết số trước lớn hớn , nhỏ hay số sau Bài 10 :Viết chương trình nhập vào chuỗi (