Ý TƯỞNG
Đặt vấn đề
Hiện nay, với sự tiến bộ vượt bậc của khoa học và công nghệ, máy bán hàng tự động đã trở nên phổ biến, cho phép người tiêu dùng tự chọn hàng hóa, thanh toán và in hóa đơn một cách tự động Những thiết bị này sử dụng các vi xử lý mạnh mẽ như Intel core i3, i5, i9 và các chip từ các hãng sản xuất bán dẫn khác như AMD, Qualcomm, giúp nâng cao hiệu suất và trải nghiệm người dùng.
Dựa trên kiến thức về hệ vi xử lý 8086, chúng em xin trình bày đề tài “Thiết kế chương trình chọn và tính tiền hàng hóa tự động sử dụng hệ vi xử lý 8086” Chương trình này nhằm tự động hóa quá trình chọn lựa và tính toán giá trị hàng hóa, mang lại hiệu quả và tiện lợi trong việc quản lý bán hàng.
Hướng thực hiện
- Xây dựng 1 chương trình chọn và tính tiền hàng hóa tự động trên phần mềm EMU 8086 - Microprocessor Emulator
- Mô phỏng chương trình trên phần mềm Proteus với:
• Vi xử lý 8086: vi xử lý trung tâm.
• IC 74273 là IC số được tích hợp bởi 8 flip-flop loại D: dùng để tách các đường địa chỉ của vi xử lý 8086.
• IC 8255A: mạch phối ghép vào/ra lập trình được gồm 24 chân I/O.
• Màn hình: dùng để hiển thị menu sản phẩm ,hóa đơn.
• Bàn phím: dùng để lựa chọn sản phẩm.
- Từ những mục tiêu trên, nhóm em xây dựng được 1 sơ đồ khối hệ thống mô phỏng như sau:
TIEU LUAN MOI download : skknchat@gmail.com
2.3 Hoạt động của hệ thống
Chúng tôi sẽ phát triển một chương trình cho vi xử lý 8086 sử dụng ngôn ngữ lập trình hợp ngữ assembly, kết hợp với IC 8255A để giao tiếp với màn hình và bàn phím Màn hình sẽ hiển thị thông tin, trong khi bàn phím sẽ cho phép người dùng tương tác trong quá trình mua sắm.
Khi khởi chạy, vi xử lý 8086 sẽ được tách các bit địa chỉ thông qua IC
IC 8255A sử dụng 8 bit địa chỉ và dữ liệu để thiết lập tín hiệu địa chỉ cho 4 thanh ghi bên trong, tùy theo cấu hình đã được thiết lập Thiết bị này phối hợp với màn hình và bàn phím nhằm hiển thị menu, cho phép người dùng tương tác và hiển thị kết quả hóa đơn.
Cơ sở lý thuyết
- Hệ vi xử lý 8086 thuộc họ Intel 80x86 với 16 bit dữ liệu và 20 bit địa chỉ 3.1.1 Sơ đồ khối của 8086
- Bên trong bộ vi xử lý 8086 bao gồm 2 khối chính:
Khối thực hiện lệnh (EU - Execution Unit) chịu trách nhiệm giải mã và thi hành các lệnh, trong khi khối giao tiếp bus (BIU - Bus Interface Unit) đảm bảo việc trao đổi thông tin giữa vi xử lý 8086 và các thiết bị ngoại vi.
- Sau đây chúng ta sẽ tìm hiều cấu tạo bên trong của từng khối:
Hình 1 Sơ đồ khối của bộ vi xử lý 8086
Khối thực hiện lệnh (EU)
Khối thực hiện lệnh (EU- Execution Unit) là nơi giả mã và thi hành các lệnh.
TIEU LUAN MOI download : skknchat@gmail.com
- Bộ xử lý số học và logic(ALU - Arithmatic Logiccal Unit) là nơi thưc hiện các lệnh số học và lệnh logic.
Các thanh ghi đa năng bao gồm 4 thanh ghi 16 bit, có khả năng lưu trữ nhiều loại dữ liệu khác nhau Tuy nhiên, trong một số tác vụ cụ thể, mỗi thanh ghi này lại đảm nhận những chức năng đặc biệt mà các thanh ghi khác không thể thực hiện.
Thanh ghi AX là một thanh ghi quan trọng, lưu trữ kết quả của các thao tác Khi kết quả có kích thước 8 bit, thanh ghi AL sẽ được sử dụng để chứa giá trị này.
+ Thanh ghi BX: đây là thanh ghi cơ sở, thương được chứa địa chỉ cơ sở của một bảng khi sử dụng lệnh XLAT.
Thanh ghi CX là một thanh ghi đếm, thường lưu trữ số lần lặp lại khi sử dụng lệnh LÔP Trong khi đó, thanh ghi CL thường chứa số lần quay hoặc dịch bit của các thanh ghi khác.
Thanh ghi DX là một thanh ghi dữ liệu quan trọng, thường được sử dụng kết hợp với thanh ghi AX để thực hiện các phép nhân và chia cho các số 16 bit Ngoài ra, DX còn đóng vai trò lưu trữ địa chỉ các cổng trong các lệnh vào/ra dữ liệu trực tiếp.
Trong vi xử lý 8086, có ba thanh ghi con trỏ (IP, BP, SP) và hai thanh ghi chỉ số (SI, DI) kích thước 16 bit Mặc dù tất cả các thanh ghi này, ngoại trừ IP, có thể hoạt động như các thanh ghi đa năng, nhưng mỗi thanh ghi được sử dụng chủ yếu như thanh ghi lệch cho các đoạn tương ứng.
+ Bảng tóm tắt sự kết hợp ngầm định giữa thanh ghi đoạn và thanh ghi lệch:
Thanh ghi đoạn Thanh ghi lệch Địa chỉ
CS IP Địa chỉ lệnh sắp thực hiện
DS BX, DI, SI Địa chỉ trong đoạn dữ liệu
SS SP hoặc BP Địa chỉ trong đoạn ngăn xếp
ES DI Địa chỉ chuỗi đích
Thanh ghi cờ F, hay còn gọi là thanh ghi trạng thái, là một thanh ghi đặc biệt có vai trò quan trọng trong CPU Mỗi bit của thanh ghi này phản ánh trạng thái của kết quả phép toán do ALU thực hiện hoặc trạng thái hoạt động của CPU Mặc dù thanh ghi cờ có tổng cộng 16 bit, nhưng chỉ có 9 bit được sử dụng làm bit cờ.
TIEU LUAN MOI download : skknchat@gmail.com
Ca cù cờcủa bộvi xửlý8086 x x x x O D I T S Z x A x P x C
- Các bit cờ chia thành hai loại:
Các cờ trạng thái bao gồm 6 loại: C, P, A, Z, S và O Những cờ này được thiết lập thành 1 hoặc xóa thành 0 sau khi thực hiện hầu hết các lệnh toán học và logic.
Các cờ điều khiển trong bộ vi xử lý bao gồm ba cờ T, I và D Những cờ này được thiết lập bằng 1 hoặc xóa bằng 0 thông qua các lệnh, nhằm điều chỉnh chế độ hoạt động của vi xử lý Cờ T (Trap) được sử dụng để kích hoạt chế độ bẫy.
- Khối điều khiển (CU- Control unit): Có nhiệm vụ tạo ra các tín hiệu điều khiển các bộ phận bên trong và bên ngoài CPU.
Khối giao tiếp bus (BIU)
Khối giao tiếp bus (BIU- Bus Interface Unit) có nhiệm vụ đẩm bảo việc trao đổi thông tin giữa 8086 với các linh kiện bên ngoài BIU gồm :
- Một bộ cộng để tạo địa chỉ vật lý 20 bit từ các thanh ghi 16 bit.
- Bốn thanh ghi đoạn 16 bit gồm CS, DS, SS và ES để giúp 8086 truy cập tới các đoạn trên bộ nhớ.
+ Thanh ghi đoạn mã CS (Code Segment),.
+ Thanh ghi đoạn dữ liệu DS (Data Segment).
+ Thanh ghi đoạn dữ liệu phụ ES (Extra Segment).
+ Thanh ghi đoạn ngăn xếp SS (Stack Segment).
TIEU LUAN MOI download : skknchat@gmail.com
- Mạch logic điều khiển có nhiệm vụ đảm bảo giao tiếp giữa 8086 với thiết bị bên ngoài.
- Hàng đợi lệnh có độ dài 6 byte là nơi chứa các mã lệnh đọc được nằm sẵn để chờ EU xử lý.
Vi xử lý 8086 được thiết kế để hoạt động một trong hai chế độ, tùy thuộc vào mức điện áp đặt ở chân số 33 (chân MN/MX):
Chế độ tối thiểu (chế độ MIN) được kích hoạt khi điện áp tại chân số 33 đạt 5V Trong chế độ này, hệ thống chỉ sử dụng vi xử lý 8086 cùng với các vi mạch nhớ và vi mạch ghép nối vào ra.
Chế độ tối đa (MAX) được kích hoạt khi điện áp tại chân số 33 đạt 0V, cho phép hệ thống đa xử lý và đồng xử lý, bao gồm cả vi xử lý 8086 và bộ đồng xử lý toán học 8087, hoạt động hiệu quả.
Vi xử lý 8086 sở hữu 20 đường địa chỉ từ A0 đến A19, trong đó 16 đường địa chỉ thấp A0 đến A15 được kết hợp với 16 đường dữ liệu từ D0 đến D15 qua các chân AD0 đến AD15 Bốn đường địa chỉ cao nhất A16 đến A19 được ghép kênh với tín hiệu trạng thái S3 đến S6, được truyền qua các chân A16/S3 đến A19/S6.
- Các chân mang thông tin dữ liệu: Vi xử ly 8086 có 16 đường dây dữ liệu từ
Kênh D15 được kết nối với 16 đường địa chỉ từ D0 đến D15 Trong quá trình hoạt động của chu kỳ bus dữ liệu, các đường dây này truyền tải thông tin về dữ liệu, bao gồm cả dữ liệu đọc từ và ghi vào bộ nhớ.
- Các chân tín hiệu trang thái.
+ Bốn đường dây địa chỉ cao nhất từ A16 đến A19 của 8086 cũng được ghép kênh, nhưng trong trường hợp này nó được ghép kênh với các tín hiệu trạng
Tải xuống TIEU LUAN MOI tại địa chỉ skknchat@gmail.com, liên quan đến các bit trạng thái từ S3 đến S6 Những bit trạng thái này được phát sinh đồng thời với dữ liệu được truyền qua các chân AD0 đến AD15.
Tín hiệu READY thông báo cho CPU về tình trạng sẵn sàng của thiết bị ngoại vi hoặc bộ nhớ Khi READY = 1, CPU có thể thực hiện các thao tác đọc/ghi dữ liệu mà không cần thêm chu kỳ chờ Ngược lại, nếu thiết bị ngoại vi hoặc bộ nhớ có tốc độ chậm, chúng sẽ gửi tín hiệu READY = 0 để yêu cầu CPU tạm dừng Khi đó, CPU sẽ kéo dài thời gian thực hiện đọc/ghi bằng cách chèn thêm chu kỳ chờ.
- Các chân tín hiệu điều khiển.
HOÀN THIỆN Ý TƯỞNG
Xây dựng 1 chương trình chọn và tính tiền hàng hóa tự động trên phần mềm EMU
TIEU LUAN MOI download : skknchat@gmail.com
# Chương trình lựa chọn và tính tiền, in ra hóa đơn hàng hóa tự động
Chào mừng bạn đến với The Coffee House! Chúng tôi rất vui được giới thiệu đến bạn thực đơn phong phú với các loại đồ uống đa dạng Bạn có thể lựa chọn từ các mục như cà phê, trà & macchiato, thức uống đá xay, thức uống trái cây, và bánh & snack Trong menu cà phê, chúng tôi cung cấp nhiều lựa chọn hấp dẫn như Bạc Sỉu, Americano, Cà phê đen, Espresso, Cà phê sữa, Cappuccino, và Sô-cô-la đá Hãy chọn món yêu thích của bạn và cho chúng tôi biết nếu bạn cần thêm gì nhé!
Trong danh sách đồ uống, trà đào cam sả (45K) và trà đen macchiato (42K) là những lựa chọn hấp dẫn Tiếp theo là trà matcha latte (59K) và trà xoài macchiato (55K) Ngoài ra, trà cherry macchiato (55K) và trà oolong vai nhu y (45K) cũng rất đáng thử Đừng quên quay về menu chính để khám phá thêm nhiều món ngon khác.
**$" tb27 db 10,13,"Vui long chon (1-7): $" tb28 db 10,13,"********************** MENU THUC UONG DA XAY
**********************$" tb29 db 10,13,"** **$" tb30 db 10,13,"** 1 CHANH SA DA XAY (49K) 2 DAO VIET QUAT DA XAY (59K) **$"
TIEU LUAN MOI download : skknchat@gmail.com tb31 db 10,13,"** 3 CHOCOLATE DA XAY (59K) 4 COOKIES DA XAY (59K) **$" tb32 db 10,13,"** 5 QUAY VE MENU CHINH **$" tb33 db
******$" tb34 db 10,13,"Vui long chon (1-5): $" tb35 db 10,13,"****************** MENU THUC UONG TRAI CAY
*****************$" tb36 db 10,13,"** **$" tb37 db 10,13,"** 1 SINH TO CAM XOAI (59K) 2 SINH TO VIET QUAT (59K)
**$" tb38 db 10,13,"** 3 QUAY VE MENU CHINH **$" tb39 db
10,13,"**************************************************************$" tb40 db 10,13,"Vui long chon (1-3): $" tb41 db 10,13,"************************* MENU BANH & SNACK
**********************$" tb42 db 10,13,"** **$" tb43 db 10,13,"** 1 BANH CHOCOLATE (29K) 2 BANH MATCHA (29K) **$" tb44 db 10,13,"** 3 BANH BONG LAN TRUNG MUOI (29K) 4 BANH TIRAMISU (29K) **$" tb45 db 10,13,"** 5 QUAY VE MENU CHINH **$" tb46 db
Vui lòng chọn số lượng từ 1 đến 5 Số tiền thanh toán (Nghìn Đồng): Cảm ơn bạn rất nhiều! Bạn đã nhập sai, vui lòng nhập lại Thực đơn bạn đã chọn bao gồm: Bạc Sỉu (29K) x, Americano (39K) x, Cà phê đen (29K) x, Espresso (35K) x, Cà phê sữa (29K) x, Cappuccino (45K) x, Sô-cô-la đá (55K) x, Trà đào cam sả (45K) x, Trà đen macchiato (42K) x.
Tải luận mới tại địa chỉ email skknchat@gmail.com Trong danh sách đồ uống, có các loại trà như Trà Matcha Latte (59K), Trà Xoài Macchiato (55K), Trà Cherry Macchiato (55K), và Trà Oolong Vải Như Ý (45K) Ngoài ra, còn có Chanh Sả Đá Xay (49K), Đào Việt Quất Đá Xay (59K), Chocolate Đá Xay (59K), và Cookies Đá Xay (59K) Đối với sinh tố, có Sinh Tố Cam Xoài (59K) và Sinh Tố Việt Quất (59K) Về bánh ngọt, bạn có thể thưởng thức Bánh Chocolate (29K), Bánh Matcha (29K), Bánh Bông Lan Trứng Muối (29K), và Bánh Tiramisu (29K).
Để kiểm tra xem bạn đã chọn môn học nào, hãy xem xét các tùy chọn từ cf1 đến cf7, tm1 đến tm6, và tu1 đến tu6 Mỗi tùy chọn đại diện cho một môn học khác nhau, giúp bạn xác định sự phù hợp với nhu cầu học tập của mình.
TIEU LUAN MOI download : skknchat@gmail.com bs1 db ? bs2 db ? bs3 db ? bs4 db ?
;thu tuc mov ax, @data mov ds, ax
;tb1 mov ah, 9 lea dx, tb1 int 21h
;cat noi dung 00H vao trong bo nho dem mov dx,00H push dx
; mov a,0 mov b,0 mov c,0 mov d,0 mov e,0
; mov cf1,0 mov cf2,0 mov cf3,0 mov cf4,0 mov cf5,0 mov cf6,0 mov cf7,0
; mov tm1,0 mov tm2,0 mov tm3,0 mov tm4,0 mov tm5,0 mov tm6,0
; mov tu1,0 mov tu2,0 mov tu3,0 mov tu4,0 mov tu5,0 mov tu6,0
TIEU LUAN MOI download : skknchat@gmail.com
; mov bs1,0 mov bs2,0 mov bs3,0 mov bs4,0
;tb2 mov ah, 2 mov dl, 0Ah int 21h
The code snippet demonstrates a series of assembly language instructions that utilize the `mov` and `int` commands to display text strings Each line sets the `ah` register to 9, which is a DOS interrupt service for displaying strings, and loads the address of different text strings (tb2 to tb9) into the `dx` register This sequence allows the program to sequentially output various text messages to the screen.
The code snippet provided is a simple assembly language program that prompts the user for input It checks the input against specific values (31h to 35h) to determine which option the user has selected If the input matches one of these values, the program branches to the corresponding label (nhap1 to nhap5) If the input is invalid, it displays an error message and prompts the user to enter their choice again This structure ensures that user input is validated effectively, enhancing the program's reliability.
The provided assembly code snippet utilizes DOS interrupts to display strings stored in memory Each instruction sets the `ah` register to 9, which indicates the function to display a string, and the `dx` register is loaded with the address of the corresponding string (tb11 to tb17) The `int 21h` instruction is then called to execute the display function for each string sequentially.
To download TIEU LUAN MOI, contact skknchat@gmail.com The program begins by displaying a message and waits for user input Depending on the input value, it increments specific counters (cf1 to cf6) and jumps to a common section for further processing If the input does not match the expected values (from 1 to 8), it directs to an error handling section Each valid input corresponds to a different action, ensuring the program responds appropriately based on user selections.
The article discusses a code snippet involving assembly language instructions, specifically for input and output operations It features a series of commands that manipulate the AX register, control program flow with jumps, and handle user input through interrupts Key operations include displaying messages and reading user input, with specific comparisons to determine the next steps in the program The code is structured with labels for clarity, allowing for organized execution of functions such as calculating totals Overall, it serves as a practical example of programming logic in assembly language.
;TRA & MACCHIATO nhap2 proc mov ah, 9 lea dx, tb20 int 21h
The article discusses a series of assembly language instructions for handling input and output operations It begins by downloading a file and initializing various data segments for display The program then prompts the user for input, checking the value entered against specific conditions to determine the next step If the input corresponds to values from 31h to 37h, it increments a counter and proceeds to a common section of the code If the input is invalid, it redirects to an error handling routine This structured approach ensures efficient data management and user interaction in assembly programming.
The article discusses a series of assembly language instructions for a program that handles user input and output It begins with multiple input sections, labeled "nhap2_2" through "nhap7_2," where the program increments various variables and moves specific values into the AX register The program includes commands for line breaks and returns to the beginning of the line, utilizing interrupt 21h for DOS operations Error handling is addressed in the "nhap_sai_2" section, which displays a message when incorrect input is detected The main processing section, "chung_2," accumulates values and checks for specific input conditions, allowing for further processing based on user responses.
TIEU LUAN MOI download : skknchat@gmail.com jmp tinh_tien_2 tiep_2: jmp nhap_chinh_2 tinh_tien_2: call tinh_tien_tong nhap2 endp
Đoạn mã này sử dụng các lệnh trong ngôn ngữ lập trình Assembly để thực hiện việc nhập liệu và hiển thị thông tin Cụ thể, nó gọi hàm ngắt 21h để in các chuỗi từ các biến tb28 đến tb34 Sau đó, mã kiểm tra giá trị nhập vào từ người dùng và so sánh với các ký tự từ 31h đến 35h, tương ứng với các lựa chọn khác nhau Nếu người dùng nhập đúng giá trị, chương trình sẽ chuyển đến các nhánh xử lý tương ứng.
Download the latest TIEU LUAN by contacting skknchat@gmail.com The program includes several input functions, each incrementing a variable and moving specific values into the AX register The main routine handles user input and displays messages based on conditions It uses interrupts for output and input operations, ensuring proper execution flow The program checks for specific character inputs to direct the process, leading to calculations or further actions as defined.
TIEU LUAN MOI download : skknchat@gmail.com tiep_3: jmp nhap_chinh_3 tinh_tien_3: call tinh_tien_tong nhap3 endp
Đoạn mã trên thực hiện việc nhập dữ liệu từ người dùng thông qua các lệnh trong ngôn ngữ lập trình Assembly Đầu tiên, nó hiển thị các thông báo trên màn hình để yêu cầu người dùng nhập thông tin Sau đó, nó kiểm tra giá trị nhập vào và phân nhánh theo từng trường hợp cụ thể, từ đó tăng biến `tu5` nếu người dùng nhập đúng giá trị Nếu giá trị không hợp lệ, chương trình sẽ chuyển đến nhánh xử lý lỗi.
Mô phỏng chương trình trên phần mềm Proteus
Chúng em đã xây dựng và mô phỏng chương trình trên phần mềm EMU 8086 dựa trên vi xử lý 8086 mà không có ghép nối ngoại vi Để tăng tính trực quan, chúng em đã sử dụng phần mềm Proteus Để thực hiện mô phỏng, chúng em cần vẽ mạch nguyên lý và tích hợp màn hình, bàn phím, dẫn đến một số thay đổi trong chương trình do các lệnh vào/ra của ghép nối ngoại vi và các chương trình con điều khiển màn hình và bàn phím.
TIEU LUAN MOI download : skknchat@gmail.com
2.2 Xây dựng mạch nguyên lý
- Do IC 74273 được tích hợp bởi 8 FlipFlop D nên mỗi IC chỉ có thể tách được
8 đường địa chỉ đa hợp của 8086 Vì vậy sơ đồ cần 3 con IC 74273 để tách hết 20 đường địa chỉ của 8086.
- Chúng em lựa chọn địa chỉ các cổng PA, PB, PC và CWR lần lượt là E1H, E3H, E5H và E7H.
- Ta có bảng địa chỉ các cổng như sau:
TIEU LUAN MOI download : skknchat@gmail.com
- Ta nhận thấy, bit có trọng số thấp nhất A0 có giá trí không đổi và là bit ‘1’ nên các chân dữ liệu được sử dụng cho 8255A sẽ là chân D8-D15.
- Bit địa chỉ thứ 2 và 3 (A1-A2) tạo thành tổ hợp 2 bit (00-01-10-11) tương tự như bit A0-A1 trên 8255A nên được sử dụng cho 2 cổng A0, A1 của 8255A.
Các bit A0 và A3-A15 là các bit địa chỉ cố định, được sử dụng kết hợp với chân M/IO và GND để tạo tín hiệu chọn vỏ CS cho 8255A Khi CS = 0, 8255A sẽ hoạt động Nếu các chân địa chỉ bị thay đổi, tín hiệu chọn vỏ CS sẽ không còn là 0.
IC 8255A sẽ không hoạt động.
Màn hình LCD 20x4 được kết nối với IC 8255A qua cổng PA, cho phép nhập/xuất dữ liệu 8 bit Đồng thời, 3 bit thấp của cổng PB được sử dụng để điều khiển các chân RS, RW và E của LCD.
TIEU LUAN MOI download : skknchat@gmail.com
- Bàn phím 2x3 là tổ hợp các nút nhấn được kết nối với 6 bit thấp của cổng PC.
- Từ đó, chúng em có sơ đồ mô phỏng ghép nối giữa 8086, IC giả mã địa chỉ
74273, LCD 20x4 và bàn phím như sau:
# Chương trình tính và in ra menu hàng hóa đã chọn tự động với IC lập trình vào/ra 8255A và LCD, bàn phím.
TIEU LUAN MOI download : skknchat@gmail.com
;Bien de theo doi du lieu tren cac cong
TB2 DB " THE COFFEE HOUSE$"
TB7 DB " MENU CA PHE$"
TB10 DB "3.CA PHE SUA-29K$"
TB15 DB " MENU BANH & SNACK$"
TB16 DB "1.BANH BONG LAN-29K$"
TB19 DB " BAN MUON MUA THEM$"
TB21 DB " THUC DON DA CHON$"
TB24 DB "CA PHE SUA (29K)$"
TB28 DB "BANH BONG LAN (29K)$"
TB31 DB "So tien thanh toan:$"
TIEU LUAN MOI download : skknchat@gmail.com
; cf1 db ? cf2 db ? cf3 db ? tm1 db ? tm2 db ? tm3 db ? bs1 db ? bs2 db ? bs3 db ?
PORTA EQU 11100001b ;PORTA duoc ket noi tu D7-D0 cua LCD
PORTB EQU 11100011b ;PORTB0 ket noi voi chan RW, PORTB1 la RS, PORTB2 la EN cua LCD
PCW EQU 11100111b ;Thanh ghi dieu khien ;Ban phim 3x3
;Key DB 0DH, 015H, 019H, 0EH, 016H, 01AH
; dat 1 so cac thu tuc:
MOV DS, AX ;DS la thanh ghi doan du lieu
MOV ES, AX ;ES la thanh ghi doan du lieu phu
;Cai dat chuc nang cua thanh ghi dieu khien toi cac cong PA, PB, PC
MOV AL,10001001B ;PA, PB output, PC input
TIEU LUAN MOI download : skknchat@gmail.com
CALL LCD_INIT ; thiet lap ban dau mov a,0 mov b,0 mov c,0 mov cf1,0 mov cf2,0 mov cf3,0 mov tm1,0 mov tm2,0 mov tm3,0 mov bs1,0 mov bs2,0 mov bs3,0
MOV DL,2 ;in ra dong 2
MOV DL,3 ; in ra dong 3
TIEU LUAN MOI download : skknchat@gmail.com
TIEU LUAN MOI download : skknchat@gmail.com
MENU_1_1: mov al,0 mov cf1,1 mov ax, 29
TIEU LUAN MOI download : skknchat@gmail.com jmp chung_1
MENU_1_2: mov al,0 mov cf2,1 mov ax, 45 jmp chung_1
MENU_1_3: mov al,0 mov cf3,1 mov ax, 29 jmp chung_1 chung_1: xor ah, ah add ax, a mov a, ax
MOV DL,2 ;in ra dong 2
MOV DL,3 ; in ra dong 3
JMP KT_YN_1 tinh_tien: call tinh_tien_tong jmp START
TIEU LUAN MOI download : skknchat@gmail.com
TIEU LUAN MOI download : skknchat@gmail.com
MENU_2_1: mov tm1,1 mov ax, 45 jmp chung_2
MENU_2_2: mov tm2,1 mov ax, 45 jmp chung_2
MENU_2_3: mov tm3,1 mov ax, 55 jmp chung_2 chung_2: xor ah, ah add ax, b mov b, ax
MOV DL,2 ;in ra dong 2
MOV DL,3 ; in ra dong 3
TIEU LUAN MOI download : skknchat@gmail.com mov bl,0
TIEU LUAN MOI download : skknchat@gmail.com
MENU_3_1: mov bs1,1 mov ax, 29 jmp chung_2
MENU_3_2: mov bs2,1 mov ax, 29 jmp chung_2
MENU_3_3: mov bs3,1 mov ax, 29 jmp chung_2 chung_3: xor ah, ah add ax, c mov c, ax
MOV DL,2 ;in ra dong 2
MOV DL,3 ; in ra dong 3
TIEU LUAN MOI download : skknchat@gmail.com
;input: CX dung de dieu khien thoi gian tre CXP chinh la 1ms
JCXZ @DELAY_END ;nhay neu noi dung thanh dem rong
; Khoi tao LCD PROC LCD_INIT
;thiet lap RS=En=RW=0 > che do ghi lenh MOV AL,0
;Thiet lap lai trinh tu
MOV AH,38H ;giao tiep 8 bit, hien thi tren ca 4 dong, kich thuoc font 5x7 CALL LCD_CMD
MOV AH,0CH ;bat hien thi va tat con tro
MOV AH,01H ;xoa toan bo noi dung tren man hinh LCD
TIEU LUAN MOI download : skknchat@gmail.com
MOV AH,06H ;tu dong di chuyen con tro den vi tri tiep theo moi khi xuat ra LCD 1 ki tu
;thiet lap rs=0 > ghi lenh
AND AL,0FCH ;En-RS-RW
;thiet lap lenh ra tren chan.
MOV AL,AH ; tuy theo AH ma LCD se xu ly theo lenh
;Sau do cho En tu 1 >0 de cho phep doc/ghi
OR AL,100B ;En-RS-RW
AND AL,0FBH ;En-RS-RW
POP AX ; lay du lieu cac thanh ghi ra
TIEU LUAN MOI download : skknchat@gmail.com
;ctc xoa toan bo noi dung tren man hinh
;set RS=1 > ghi du lieu
OR AL,10B ;EN-RS-RW
;set du lieu dau ra
MOV AL,AH ;tuy theo AH bang bao nhieu
OR AL,100B ;EN-RS-RW
AND AL,0FBH ;EN-RS-RW
;in ra chuoi ki tu tai vi tri da dat tai LCD_set_cur 58
TIEU LUAN MOI download : skknchat@gmail.com
;input: SI=dia chi cua chuoi, Si se tu ket thuc khi xuat hien ki tu '$'
PUSH SI;cat thanh ghi con tro nguon
;doc va ghi du lieu
LODSB ;Nap vao AL/AX 1 phan tu cua chuoi CMP AL,'$'
JE @LCD_PRINTSTR_EXIT MOV AH,AL
CALL LCD_WRITE_CHAR JMP @LCD_PRINTSTR_LT
;input: DL=hang, DH=Cot
; DH = 1-8, cot 1 tuong ung voi 1
;LCD se su dung dia chi cot bat dau tu 0
DEC DH ;tang DH len 1
TIEU LUAN MOI download : skknchat@gmail.com
JMP @LCD_SET_CUR_END
MOV AH,80H ; di chuyen dong 1
JMP @LCD_SET_CUR_ENDCASE
MOV AH,0C0H ;di chuyen xuong con dong 2
@LCD_SET_CUR_ENDCASE ;DL==3
MOV AH,94H ; di chuyen dong 3
JMP @LCD_SET_CUR_ENDCASE
MOV AH,0D4H ;di chuyen xuong con dong 4
JMP @LCD_SET_CUR_ENDCASE
TIEU LUAN MOI download : skknchat@gmail.com
The provided assembly code snippet initializes the AL register to zero and continuously checks the state of input from PORTC It tests specific bits in AL to determine which button (phim) is pressed, jumping to corresponding labels (phim_1 to phim_6) based on the detected input When button 1 is pressed, it sets the BL register to 01H, indicating an action related to that button.
TIEU LUAN MOI download : skknchat@gmail.com phim_4: mov bl, 04H
;tinh tien tong tinh_tien_tong proc
The code snippet utilizes conditional jumps to navigate through a menu system based on specific conditions It checks various flags (cf1, cf2, cf3, tm1, tm2, tm3) to determine which menu option to execute If cf1 equals 1, it jumps to menu_11; if cf2 equals 1, it goes to menu_12; if cf3 equals 1, it directs to menu_13 Similarly, it checks tm1, tm2, and tm3 for corresponding menu options (menu_21, menu_22, and menu_23) This structured approach allows for efficient menu navigation based on user inputs.
TIEU LUAN MOI download : skknchat@gmail.com cmp bs1,1 je menu_31 cmp bs2,1 je menu_32 cmp bs3,1 je menu_33 jmp cam_on
;MOV DONG_MAY, 1 jmp menu_da_chon menu_12: mov cf2,0
;MOV DONG_MAY, 1 jmp menu_da_chon menu_13: mov cf3,0
;MOV DONG_MAY, 1 jmp menu_da_chon
TIEU LUAN MOI download : skknchat@gmail.com
;MOV DONG_MAY, 1 jmp menu_da_chon menu_22: mov tm2,0
;MOV DONG_MAY, 1 jmp menu_da_chon menu_23: mov tm3,0
;MOV DONG_MAY, 1 jmp menu_da_chon
TIEU LUAN MOI download : skknchat@gmail.com
;MOV DONG_MAY, 1 jmp menu_da_chon menu_32: mov bs2,0
;MOV DONG_MAY, 1 jmp menu_da_chon menu_33: mov bs3,0
;MOV DONG_MAY, 1 jmp menu_da_chon
JE tra_ve jmp cam_on tra_ve:
TIEU LUAN MOI download : skknchat@gmail.com tinh_tien_tong endp
Sau khi hoàn thành quá trình viết, mô phỏng và kiểm tra, chương trình của chúng em hoạt động hiệu quả và chính xác Tuy nhiên, do giới hạn về số dòng và ký tự trên màn hình LCD 20x4, chúng em không thể hiển thị nhiều hàng hóa cũng như không in ra được số lần lặp lại của một hàng hóa như trong chương trình mô phỏng trên EMU 8086.
- Sau đây là một số hình ảnh mô phỏng:
TIEU LUAN MOI download : skknchat@gmail.com
TIEU LUAN MOI download : skknchat@gmail.com
TIEU LUAN MOI download : skknchat@gmail.com