1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu PH ẦN 1: LẬP TRÌNH HỢP NGỮ CHO HỌ x86 doc

16 4,2K 111

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 223 KB

Nội dung

Hình 1.2: Giao diện chương trình mô phỏngTrên chương trình mô phỏng, ta có thể quan sát được nội dụng các thanh ghi, dữ liệu lưu trong bộ nhớ, màn hình, bộ ALU, Stack, thanh ghi cờ… Ngoà

Trang 1

PHẦN 1: LẬP TRÌNH HỢP NGỮ CHO HỌ x86

BÀI 1: CĂN BẢN VỀ HỢP NGỮ

1 MỤC ĐÍCH

Làm quen với ngôn ngữ lập trình Assembly

Biết cách viết, dịch, chạy một vài chương trình đơn giản trên chương trình mô phỏng

Emu8086

2 TÓM TẮT LÝ THUYẾT

Hợp ngữ (assembler) là ngôn ngữ bậc thấp, giúp cho người lập trình không phải ghi nhớ mã máy (opcode) mà sử dụng các từ ngữ gợi nhớ (pseudo-code) gần với ngôn ngữ tự nhiên để miêu

tả công việc cần thực hiện Tuy vậy, assembler rất gần với ngôn ngữ máy, đòi hỏi người lập trình phải hiểu biết tương đối đầy đủ về cấu trúc phần cứng máy tính

Với mỗi kiểu kiến trúc của bộ vi xử lý, có một bộ lệnh riêng, do đó, có một ngôn ngữ assembler riêng cho nó Ở đây, chúng ta nghiên cứu assembler cho các bộ vi xử lý Intel thuộc họ x86 Các chương trình sẽ được viết trên chương trình mô phỏng Emu8086 Tuy chương trình mô phỏng không thể hiện được đầy đủ các tập lệnh có trong họ 8086 Ngược lại, chương trình mô phỏng giúp ta tìm hiểu về hợp ngữ một cách trực quan và dễ hiểu

2.1 Cấu trúc thông thường của một chương trình hợp ngữ được viết trên Emu8086:

#make_COM# <Khai báo chương trình dang com>

.stack <Khai báo kích thước ngăn xếp>

.data <Khai báo dữ liệu>

.code

ORG 100h ; COM file is loaded at CS:0100h

<Các lệnh>

End

Chúng ta có bỏ qua các khai báo về “.model”, “.stack”, “.data”, “.code” và “end” khi chạy trên chương trình mô phỏng

Ví dụ: Chương trình sau in ra màn hình dòng chữ “Hello, World!”

#make_COM# ; Standard header

ORG 100H

JMP START ; Jump to start:

msg DB 13, 10, 'Hello, World!$‘ ; Data

START:

LEA DX, msg ; Load address of msg to DX register

MOV AH, 9 ; Print using DOS interrupt

INT 21h

MOV AH, 4Ch ; Exit to operating system

INT 21h

Trang 2

Lưu ý:

- Mọi chương trình đều phải có đoạn code thoát khỏi chương trình, nếu không chương trình sẽ không dừng khi hết chương trình của mình

2.2 Khai báo biến trong hợp ngữ

Cú pháp:

<tên biến> D<Kiểu DL> <giá trị khởi tạo>

hoặc

<tên biến> D<Kiểu DL> <số phần tử> dup(<giá trị khởi tạo>)

Các kiểu dữ liệu: B (1 byte), W (2 bytes), D (4 bytes)

Nếu không khởi tạo, dùng dấu hỏi “?”

Ví dụ:

char s[]=”\nhello world!” s DB 10,13,”hello world!$”

2.3 Dịch, liên kết, chạy và chẩn lỗi chương trình từ dấu nhắc DOS

Để tạo một chương trình dạng com, ta chọn File/New/COM Template như hình 1.1

Hình 1.1: Cách tao chương trình trên Emu8086

Để biên dịch chương trình, ta chọn Compile Ta có thể mô phỏng trực tiếp bằng cách chọn

Emulate Màn hình sẽ hiện thị lên như hình 1.2

Trang 3

Hình 1.2: Giao diện chương trình mô phỏng

Trên chương trình mô phỏng, ta có thể quan sát được nội dụng các thanh ghi, dữ liệu lưu trong bộ nhớ, màn hình, bộ ALU, Stack, thanh ghi cờ… Ngoài ra, ta có thể chạy chương trình (chọn Run) hoặc thực hiện từng lệnh (Single Step)

2.4 Một số lệnh cơ bản

MOV des,src : chép dữ liệu từ src sang des

INC des : tăng des một đơn vị

DEC des : giảm des một đơn vị

ADD des,src : des = des + src

SUB des,src : des = des – src

INT num : gọi ngắt

3 THỰC HÀNH

3.1 Bài tập

B

à i 1 Viết CT nhập vào 1 ký tự, xuất ra ký tự đó

V

í dụ :

Nhap 1 ky tu: b

Ky tu vua nhap: b

B

à i 2 Viết chương trình xuất ra màn hình một số dòng chữ

Ví dụ:

Dai hoc Quoc gia Thanh pho Ho Chi Minh

Truong Dai hoc Khoa hoc tu nhien

Khoa Dien tu – Vien thong

Trang 4

Bài 3 Viết CT nhập vào 1 ký tự, xuất ra ký tự liền trước và liền sau.

V

í dụ :

Moi ban nhap 1 ky tu: b

Ky tu lien truoc: a

Ky tu lien sau: c

Bài 4 Viết CT nhập vào 1 ký tự thường In ra ký tự Hoa

V

í dụ :

Moi ban nhap 1 ky tu: b

Ky tu hoa la: B

Bài 5 Viết CT nhập vào 1 ký tự hoa In ra ký tự thường

Ví dụ:

Moi ban nhap 1 ky tu: B

Ky tu thuong la: b

Bài 6 Viết chương trình nhập vào 2 số nguyên dương x1, x2 (1  x2 < x1 < 9) Xuất ra kết quả

các phép tính: 3x1 + 5x2

Ví dụ:

x1 = 3 x2 = 4 3x1 + 5X2 = 32

3.2 Hướng dẫn

Bài 1 Để nhập 1 một ký tự sử dụng hàm 1 của ngắt 21h, để xuất, sử dụng hàm 2.

Ví dụ:

mov AH,1

int 21h ; kết quả trong AL

mov DL,AL ; kí tự cần xuất trong DL

mov AH,2

int 21h

Bài 2 Cặp kí tự xuống dòng là 10,13 Có thể khai báo nhiều xâu kí tự hoặc chung một xâu.

Ví dụ:

Msg1 DB 10,13,9,“ Dai hoc Quoc gia Thanh pho Ho Chi Minh”

Msg2 DB 10,13,9,“ Truong Dai hoc Khoa hoc tu nhien” Hoặc

Msg12 DB 10,13,9,“ Dai hoc Quoc gia Thanh pho Ho Chi Minh”

DB 10,13,9,“ Truong Dai hoc Khoa hoc tu nhien”

Bài 3, 4 Kí tự hoa và kí tự thường của cùng một chữ cái tiếng Anh cách nhau 20h Do đó, để

chuyển đổi chữ hoa thành chữ thường và ngược lại, chỉ cần dùng lệnh ADD, SUB

Bài 5 Để chuyển đổi các kí tự ‘0’ – ‘9’ thành số 0 – 9 chỉ cần thực hiện phép trừ đi 48 (mã của

‘0’) Sau khi thực hiện phép tính, chuyển đổi thành kí tự và in ra màn hình (có thể dùng biểu diễn Hex)

Trang 5

BÀI 2: CÁC CHỈ THỊ LOGIC VÀ ĐIỀU KHIỂN

1 MỤC ĐÍCH

Hiểu cách so sánh hai số trong hợp ngữ

Hiểu cách thay đổi thứ tự thực hiện các lệnh

Biết cách sử dụng các lệnh so sánh, nhảy và lặp

2 TÓM TẮT LÝ THUYẾT

2.1 Lệnh so sánh

Trong hợp ngữ, muốn so sánh hai số, ta phải thực hiện một phép toán số học hoặc logic trên hai số đó và căn cứ vào các bit trong thanh ghi cờ rồi đưa ra kết luận Để làm việc này, có thể dùng lệnh CMP và TEST

Bản chất của lệnh CMP Des,Src là lệnh SUB Des,Src (thực hiện phép tính Des – Src)

nhưng kết quả của phép tính không được lưu vào Des như trong lệnh SUB

Ví dụ: so sánh hai số nguyên dương

MOV AH,1

MOV AL,2

CMP AH,AL

Sau khi thực hiện hai lệnh trên, cờ Carry (CF) bật, báo hiệu rằng AH < AL

Bản chất của lệnh TEST Des,Src là lệnh AND Des,Src (thực hiện phép tính Des AND Src)

nhưng kết quả của phép tính không được lưu vào Des như trong lệnh AND

Ví dụ: kiểm tra hai bit cuối cùng của AL

TEST AL,3 ; 3h = 11b

Nếu cờ Zero (ZF) bật, có nghĩa là cả hai bit 0 và 1 của AL đều bằng 0

2.2 Lệnh nhảy

Thông thường, khi một lệnh (instruction) được thực hiện, giá trị của thanh ghi IP (instruction pointer) được tự động cập nhật để trỏ đến lệnh kế tiếp Ngoài ra, nội dung của thanh ghi IP chỉ có thể bị thay đổi thông qua một số lệnh đặc biệt Đó là: các lệnh nhảy (J*), lệnh lặp (LOOP*), lệnh gọi hàm (call, ret), lệnh gọi ngắt (int, iret) Các lệnh này được xếp vào nhóm “Lệnh điều khiển luồng” (Program flow control instructions) Trong bài thực hành này, chúng ta sẽ học cách sử dụng các lệnh nhảy và các lệnh lặp

Lệnh nhảy không điều kiện

JMP <target>

Có các trường hợp sau:

JMP SHORT <tên nhãn> (short jump) Khi đó trong mã lệnh lưu 1 byte

khoảng cách (offset) giữa vị trí hiện tại và vị trí cần nhảy đến Kiểu này chỉ nhảy trong phạm vi từ –128 đến +127 byte so với vị trí hiện tại

Ví dụ: JMP SHORT Calculate

JMP <tên nhãn> (near jump) Khi đó trong mã lệnh lưu 2 byte khoảng cách

(offset) giữa vị trí hiện tại và vị trí cần nhảy đến Kiểu này nhảy tùy ý trong phạm

vi segment

Ví dụ: JMP Calculate

Trang 6

JMP FAR PTR <tên nhãn> (far jump) Khi đó trong mã lệnh lưu offset và

segment của vị trí cần nhảy đến Kiểu này nhảy đến bất kì chỗ nào

Ví dụ: JMP FAR PTR Calculate

JMP <con trỏ 2 byte> (near indirect jump) Khi đó trong mã lệnh lưu địa

chỉ offset của một ô nhớ Khi thực hiện, IP sẽ được gán bằng giá trị lưu tại địa chỉ này Có thể kết hợp dùng với định vị chỉ số

Ví dụ:

myPointer DW Prepare, Calculate, Check, Output

JMP myPointer[bx]

đến

JMP <con trỏ 4 byte> (far indirect jump) Tương tự trường hợp trên,

nhưng con trỏ gồm cả segment và offset Chỉ khác ở khai báo con trỏ

Ví dụ:

myPointer DD Prepare, Calculate, Check, Output

MOV cl,2

JMP myPointer[bx]

đến

JMP <thanh ghi 2 byte> (indirect jump via regs) Nhảy đến địa chỉ lưu

trong thanh ghi AX

Ví dụ:

MOV ax, offset Calculate

Lệnh nhảy có điều kiện

Trang 7

J <Label>

Các lệnh nhảy có điều kiện bắt đầu bằng chữ J sau đó là các chữ cái biểu thị điều kiện (ví dụ

JGE ah,5: Jump if Greater than or Equal, nhảy nếu AH lớn hơn hay bằng 5), tiếp sau là một tên

nhãn Tùy thuộc vào trạng thái các cờ hiệu mà bộ vi xử lý có thực hiện việc nhảy đến nhãn hay không

Đối với bộ vi xử lý 80286 trở xuống, lệnh nhảy có điều kiện có độ dài 2 byte, byte đầu tiên chứa mã lệnh, byte thứ hai chứa khoảng cách tương đối từ lệnh đến nhãn, vì vậy <Label> trong lệnh nhảy có điều kiện phải nằm trong khoảng từ -128 đến 127 so với vị trí lệnh nhảy Muốn nhảy xa hơn ta phải dùng kết hợp lệnh nhảy không điều kiện JMP

Từ 80386 trở lên, bộ lệnh được bổ sung, cho phép sử dụng lệnh nhảy có điều kiện có độ dài

4 byte, do đó <Label> có quyền nằm tùy ý trong cùng phạm vi segment

Khi sử dụng lệnh nhảy có điều kiện sau khi thực hiện phép so sánh, phải đặc biệt lưu ý toán hạng trong phép so sánh là số có dấu (signed) hay không có dấu (unsigned) để lựa chọn lệnh cho phù hợp

Ví dụ:

MOV AH,AL ; AL hiện bằng 128 CMP AH,1

JGE Greater ; AH > 1 nhưng không nhảy ????

Greater:

Có ba nhóm lệnh nhảy cơ bản là: kiểm tra cờ dấu, kiểm tra một số có dấu và kiểm tra một số không dấu

Các lệnh nhảy kiểm tra cờ dấu:

Trang 8

Các lệnh nhảy kiểm tra một số có dấu:

Các lệnh nhảy kiểm tra một số không dấu:

Một số lệnh nhảy có điều kiện thường dùng :

JE, JZ (nhảy nếu bằng).

JA (nhảy nếu lớn hơn, không dấu), JG (nhảy nếu lớn hơn, có dấu), JB (nhảy nếu

nhỏ hơn, không dấu), JL (nhảy nếu nhỏ hơn, có dấu)

JAE (nhảy nếu lớn hơn hay bằng, không dấu), JGE (nhảy nếu lớn hơn hay bằng,

có dấu), JBE (nhảy nếu nhỏ hơn hay bằng, không dấu), JLE (nhảy nếu nhỏ hơn

hay bằng, có dấu)

JNE, JNZ (nhảy nếu không bằng).

Ví dụ: nếu AL là số nguyên không dấu thì đoạn chương trình ở trên phải sửa lại như sau:

MOV AH,AL CMP AH,1 JAE Greater

Trang 9

Greater:

Lệnh lặp

Bằng cách dùng các lệnh nhảy có thể tạo ra vòng lặp Tuy nhiên, để viết chương trình tiện lợi

và ngắn gọn, có thể dùng thêm các lệnh lặp như LOOP, LOOPZ,…

Lệnh LOOP <Label> tự động giảm CX một đơn vị, sau đó kiểm tra xem CX có bằng 0,

nếu không bằng thì nhảy đến nhãn <Label>

Lệnh LOOPZ <Label> tự động giảm CX một đơn vị, sau đó kiểm tra xem CX có bằng 0

hoặc cờ ZF có bật không, nếu cả hai điều này không xảy ra thì nhảy đến nhãn <Label>

Ví dụ: Nhập mảng A gồm 10 ký tự

MOV SI, 0 ; chỉ số mảng

MOV CX, 10 ; số lần lặp

LAP:

;nhập ký tự

MOV AH, 1

INT 21H

MOV A[SI], AL

INC SI

; xuất ký tự

MOV AH, 2

INT 21H

LOOP LAP

Các lệnh lặp

Bài tập

Bài 1 Viết chương trình cho nhập 1 ký tự từ màn hình và xuất câu thông báo chào buổi sáng, buổi trưa hay buổi chiều tương ứng với ký tự nhậpvào là 'S', 's', 'T', 't', 'C', 'c'

Bài 2 Nhập 2 số nguyên dương thuộc N,M thuộc [0 9], nhập 1 ký tự Char Xuất ra màn hình ma trận gồm N dòng và M cột gồm ký tự Char

Ví dụ: N=3, M=4, C='*'

 * * * *

* * * *

Trang 10

* * * * Bài 3 Nhập 2 số nguyên dương A, B Tính A/B, A*B (không dùng lệnh DIV, MUL)

Ví dụ: A=18, B=3

Tính A/B: 18 - 3 - 3 - 3 - 3 - 3 - 3 = 0, vậy A/B = 6 (tổng số lần A trừ B cho đến khi A = 0) Tính A*B = 18 + 18 + 18 = 54

Bài 4 Tìm USCLN của 2 số nguyên dương N, M nhập từ bàn phím Kiểm tra N,M có là hai số nguyên tố cùng nhau không?

Ví dụ: N = 15, M = 6 => USCLN(15, 6) = 3

Ví dụ: N = 3, M = 5 => USCLN(3, 5) = 1 => 3, 5 là 2 số nguyên tố cùng nhau Bài 5 Dùng lệnh lặp, viết chương trình nhập vào 1 chuỗi ký tự Sau khi nhập xong đếm xem chuỗi có bao nhiêu ký tự Xuất số ký tự có trong chuỗi

Ví dụ: S = "Hello world !" ==> Số kí tự trong chuỗi là 13.

Bài 6 Nhập vào 2 chuỗi số, đổi 2 chuỗi thành số, sau đó cộng hai số, đổi ra chuỗi và xuất chuỗi tổng

Ví dụ: S1 = "123" => N1 = 123

S2 = "456" => N2 = 456

N = N1 + N2 = 123 + 456 = 579 => S = "579" (xuất S ra màn hình) Bài 7 Viết chương trình cho phép nhập vào một chuỗi S

Đổi tất cả ký tự thường thành ký tự hoa

Đổi tất cả ký tự hoa thành ký tự thường

Bài 8 Nhập và xuất mảng 1 chiều Tìm phần tử max, min, tính tổng các phần tử trong mảng

Ví dụ: N = 5

A[N] = {3,1,2,7,4}

=> max = 7, min = 1, tổng = 17

Bài 9 Cài đặt thuật toán Bubble Sort dùng ASM

Thuật toán Bubble Sort theo ngôn ngữ C như sau:

for (int i = 0; i< N-1; i++)

for(int j=N-1;j > i; j )

if(a[j] < a[j-1])

Hoan_Vi (a[j], a[j-1]);

Bài 10 Nhập và xuất mảng A hai chiều

a Tính tổng các phần tử trên đường chéo chính, đường chéo phụ

b Đếm số phần tử 0 và phần tử khác 0 trong mảng

c Tìm phần tử max của mỗi dòng, mỗi cột Tính tổng của mỗi dòng, mỗi cột

d Nhập 1 mảng hai chiều B, tạo một mảng hai chiều C có các phần tử trên dòng chẵn bằng với các phần tử trên dòng chẵn của A, các phần tử trên dòng lẻ bằng các phần tử trên dòng

lẻ của B

Hướng dẫn

Bài 1 Xem ví dụ:

.MODEL SMALL

Trang 11

.STACK 100H

.DATA

CBS DB "CHAO BUOI SANG$"

CBT DB "CHAO BUOI TRUA$"

CBC DB "CHAO BUOI CHIEU$"

.CODE

MOV AX, @DATA MOV DS, AX

;nhập 1 ký tự bất kỳ MOV AH, 1

INT 21H CMP AL, 'S'

JE CHAO_BUOI_SANG CMP AL, 's'

JE CHAO_BUOI_SANG CMP AL, 'T'

JE CHAO_BUOI_TRUA CMP AL, 't'

JE CHAO_BUOI_TRUA CMP AL, 'C'

JE CHAO_BUOI_CHIEU CMP AL, 'c'

JE CHAO_BUOI_CHIEU CHAO_BUOI_SANG:

LEA DX, CBS MOV AH,9 INT 21H JMP THOAT CHAO_BUOI_TRUA:

LEA DX, CBT MOV AH,9 INT 21H JMP THOAT CHAO_BUOI_CHIEU:

LEA DX, CBC MOV AH,9 INT 21H JMP THOAT THOAT:

MOV AH, 4CH INT 21H END

Bài 3 Để nhập một số nguyên, có thể làm như sau: đầu tiên nhập xâu kí tự chứa các số từ 0 đến

9, sau đó đổi từng kí tự ra số và nhân với các lũy thừa tương ứng của 10 và cộng lại

Bài 9 Xem ví dụ sau: Lặp gồm 2 vòng lặp (xếp mảng A có N phần tử tăng dần)

MOV N, 10 ;giả sử mảng A gồm N ký tự, trong ví dụ này N=10

MOV CX, N

DEC CX

Trang 12

MOV SI, 0

FOR_I:

PUSH CX

MOV CX, N

MOV DI, 0

MOV DL, A[SI]

FOR_J:

CMP DL, A[DI]

JB LAP MOV BL, A[DI] MOV A[DI], DL MOV A[SI], BL MOV DL, A[SI] LAP:

INC DI LOOP FOR_J

INC SI

POP CX

LOOP FOR_I

Trang 13

Làm việc với số nguyên

Mục đích

 Biết sử dụng các phép toán logic, số học

 Biết cách đổi giữa các cơ số nhị phân, thập phân và thập lục phân

Tóm tắt lý thuyết

Phép toán trên bit

1 NOT : lệnh này đổi tác tố đích thành số bù Không có cờ nào bị ảnh hưởng

2 AND (OR hoặc XOR) : AND (OR, XOR) Đích, nguồn

Tất cả các cờ đều bị ảnh hưởng

Chú ý : AND dùng để xóa các bit OR dùng để bật các bit XOR dùng để đảo bit

3 Các lệnh dịch bit SHL và SHR : dịch các bit của toán hạng đích sang trái (hoặc phải) một hay nhiều bit

SHL (SHR) Đích, 1 hoặc SHL (SHR) Đích, CL

CL là số lần dịch bit.Việc dịch bit trái (phải) tương ứng với phép nhân (chia) cho

lũy thừa 2

Chú ý : Hiện tượng tràn số có thể xảy ra và cờ CF chứa bit cuối cùng bị dịch ra

khỏi toán hạng.Để dịch bit với các số âm ta nên dùng SAL hoặc SAR tương ứng

4 Các lệnh quay ROL và ROR : dịch các bit của toán hạng đích sang trái (phải)

một hay nhiều bit theo vòng tròn

ROL (ROR) Đích, 1 hoặc ROL (ROR) Đích, CL

CL là số lần quay bit, cờ CF sẽ chứa giá trị bit bị dịch ra khỏi toán hạng

Chú ý : Để dịch bit qua cờ nhớ ta dùng RCL hoặc RCR tương ứng

Ví dụ : Sử dụng lệnh ROL để đếm số bit 1 trong thanh ghi BX

XOR AX,AX

MOV CX,16 TOP :

ROL BX, 1 JNC NEXT ; kiểm tra có phải là bit 0 không

INC AX ; nếu không phải thì tăng số bit 1 NEXT:

LOOP TOP ; lặp cho đến khi làm xong

Lệnh số học

1 Cộng ADD, ADC : ADD (ADC) đích , nguồn

Ví dụ : ADD AL , 10H -> AL = AL + 10H

2 Trừ SUB, SBB : SUB (SBB) đích , nguồn

Ví dụ : SUB BL, 10H -> BL = BL – 10H

Chú ý : Các phép toán cộng trừ trực tiếp giữa các ô nhớ là không hợp lệ Ngoài ra

ta cũng có thể sử dụng INC hoặc DEC để cộng hoặc trừ 1 đơn vị vào nội dung

một ô nhớ hoặc một thanh ghi

3 Nhân MUL, IMUL: MUL (IMUL) nguồn

Lệnh MUL thực hiện phép nhân không dấu, còn IMUL là lệnh nhân có dấu Nếu nguồn

là byte (8 bit) thì kết quả chứa trong AX và AX = AL * nguồn Nếu nguồn là word (16 bit) thì kết quả chứa trong DX:AX và DX:AX = AX * nguồn Nếu nguồn là double (32 bit) thì kết quà chứa trong EDX:EAX và EDX:EAX = EAX * nguồn

4 Chia DIV, IDIV : DIV (IDIV) số chia

Ngày đăng: 25/01/2014, 14:20

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Cách tao chương trình trên Emu8086 - Tài liệu PH ẦN 1: LẬP TRÌNH HỢP NGỮ CHO HỌ x86 doc
Hình 1.1 Cách tao chương trình trên Emu8086 (Trang 2)
Để tạo một chương trình dạng .com, ta chọn File/New/COM Template như hình 1.1 - Tài liệu PH ẦN 1: LẬP TRÌNH HỢP NGỮ CHO HỌ x86 doc
t ạo một chương trình dạng .com, ta chọn File/New/COM Template như hình 1.1 (Trang 2)
Hình 1.1: Cách tao chương trình trên Emu8086 - Tài liệu PH ẦN 1: LẬP TRÌNH HỢP NGỮ CHO HỌ x86 doc
Hình 1.1 Cách tao chương trình trên Emu8086 (Trang 2)
Hình 1.2: Giao diện chương trình mô phỏng - Tài liệu PH ẦN 1: LẬP TRÌNH HỢP NGỮ CHO HỌ x86 doc
Hình 1.2 Giao diện chương trình mô phỏng (Trang 3)
Hình 1.2: Giao diện chương trình mô phỏng - Tài liệu PH ẦN 1: LẬP TRÌNH HỢP NGỮ CHO HỌ x86 doc
Hình 1.2 Giao diện chương trình mô phỏng (Trang 3)
Bài 1. Viết chương trình cho nhập 1 ký tự từ màn hình và xuất câu thông báo chào buổi sáng, buổi trưa hay buổi chiều tương ứng với ký tự nhậpvào là 'S', 's', 'T', 't', 'C', 'c'. - Tài liệu PH ẦN 1: LẬP TRÌNH HỢP NGỮ CHO HỌ x86 doc
i 1. Viết chương trình cho nhập 1 ký tự từ màn hình và xuất câu thông báo chào buổi sáng, buổi trưa hay buổi chiều tương ứng với ký tự nhậpvào là 'S', 's', 'T', 't', 'C', 'c' (Trang 9)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w