I Viết chương trình Chương trình cho phép nhập vào một chuỗi ký tự và in ra chuỗi nghịch đảo. Chương trình sử dụng cả 3 đoạn mã lệnh, dữ liệu, ngăn xếp. 1.code chương trình TITLE DAOCHUOI .MODEL SMALL .DATA M1 DB NHAP VAO 1 CHUOI : M2 DB CHUOI NGICH DAO LA: .CODE MAIN PROC MOV AX,DATA MOV DS,AX ;HIEN CHUOI M1 RA MAN HINH MOV AH,9 LEA DX,M1 INT 21H ;KHOI TAO VONG LAP BAN DAU CX=0 MOV CX,0 NHAP: ;DOC KY TU TU BAN PHIM MOV AH,1 INT 21H CMP AL,0DH ;SO SANH AL VOI ENTER JE INRA ;NHAN ENTER THI NHAY DEN INRA XOR AH,AH ;AH=0 PUSH AX ;DAY AX VAO NGAN XEP INC CX ;TANG CX LEN 1 JMP NHAP ;QUAY LAI NHAP INRA: ;HIEN CHUOI M2 RA MAN HINH MOV AH,9 LEA DX,M2 INT 21H LAP: POP AX ;LAY NOI DUNG RA KHOI NGAN XEP MOV DL,AL MOV AH,2 INT 21H ;HIEN KY TU LOOP LAP CALL THOAT ;GOI THU TUC MAIN ENDP THOAT PROC MOV AH,4CH INT 21H RET THOAT ENDP END MAIN ..........................................
BÀI TẬP LỚN : MÔN KIẾN TRÚC MÁY TÍNH Họ và tên : PHẠM HỮU THANH Lớp : 50 th 2 MSSV :0851061208 **************************** *************************** I/ Viết chương trình Chương trình cho phép nhập vào một chuỗi ký tự và in ra chuỗi nghịch đảo. Chương trình sử dụng cả 3 đoạn mã lệnh, dữ liệu, ngăn xếp. 1.code chương trình TITLE DAOCHUOI .MODEL SMALL .DATA M1 DB 'NHAP VAO 1 CHUOI :$' M2 DB 'CHUOI NGICH DAO LA:$' .CODE MAIN PROC MOV AX,@DATA MOV DS,AX ;HIEN CHUOI M1 RA MAN HINH MOV AH,9 LEA DX,M1 INT 21H ;KHOI TAO VONG LAP BAN DAU CX=0 MOV CX,0 NHAP: ;DOC KY TU TU BAN PHIM MOV AH,1 INT 21H CMP AL,0DH ;SO SANH AL VOI ENTER JE INRA ;NHAN ENTER THI NHAY DEN INRA XOR AH,AH ;AH=0 PUSH AX ;DAY AX VAO NGAN XEP INC CX ;TANG CX LEN 1 JMP NHAP ;QUAY LAI NHAP INRA: ;HIEN CHUOI M2 RA MAN HINH MOV AH,9 LEA DX,M2 INT 21H LAP: POP AX ;LAY NOI DUNG RA KHOI NGAN XEP MOV DL,AL MOV AH,2 INT 21H ;HIEN KY TU LOOP LAP CALL THOAT ;GOI THU TUC MAIN ENDP THOAT PROC MOV AH,4CH INT 21H RET THOAT ENDP END MAIN *************************** *************************** 2.Chạy chương trình: KHI CHẠY NHAN.EXE TA ĐƯỢC CHƯƠNG TRÌNH NHƯ SAU: NHẬP VÀO CHUỖI ASDFG TA ĐƯỢC: KẾT QUẢ THU ĐƯỢC: GFDSA II/ Dùng debug giám sát chương trình: Bước đầu tiên sau khi vào dùng debug để vào chương trình, ta dùng lệnh r để xem nội dung của các thanh ghi trong bài dưới dạng hex. a)Xác định giá trị cặp thanh ghi: -Đoạn chứa phần mã lệnh CS=13EF -Đoạn chứa phần mã lệnh IP= 0000 -Đoạn chứa phần mã lệnh DS= 13DF -Đoạn chứa phần mã lệnh SI=0000 -Đoạn chứa phần mã lệnh SS =13EF -Đoạn chứa phần mã lệnh SP= 0000 -Dòng thứ ba của chương trình chứa địa chỉ segment : offset, mã máy và dạng hợp ngữ. Các cặp chữ ở cuối dòng thứ hai là các trạng thái hiện thời của cờ ( bao gồm cờ trạng thái và cờ điều khiển). Và ở đây chỉ có cờ ngăt được thiết lập còn các cờ khác như cờ tràn, cờ định hướng, cờ dấu, cờ zero và cờ nhớ phụ, cờ chẵn lẽ, cờ nhớ đều được xóa. b)Xác định vị trí bắt đầu và kết thúc của các đoạn: - Chương trình bắt đầu tại 0000h và kết thúc tại 0012h. Nhìn vào sơ đồ hình vẽ dưới ta có thể thấy được điểm kết thúc, còn các phần còn lại là các kí tự đi kèm theo mã assembly do chương trình debug tạo ra. Tiếp đến để hiển thị chương trình ta gõ _U 0000 0012 để hiện thị chương trình Chương trình sẽ tự động dịch ngược các lệnh từ cuối 0012 lên -MÃ LÊNH: +Vị trí bắt đầu +Vị trí kết thúc -DỮ LIỆU +Vị trí bắt đầu +Vị trí kết thúc -NGĂN XẾP +Vị trí bắt đầu +Vị trí kết thúc -Vị trí địa chỉ logic segment: -Vị trí địa chỉ vật lý: *So sánh c)Dịch ngược . BÀI TẬP LỚN : MÔN KIẾN TRÚC MÁY TÍNH Họ và tên : PHẠM HỮU THANH Lớp : 50 th 2 MSSV :0851061208 ****************************. khi vào dùng debug để vào chương trình, ta dùng lệnh r để xem nội dung của các thanh ghi trong bài dưới dạng hex. a)Xác định giá trị cặp thanh ghi: -Đoạn chứa phần mã lệnh CS=13EF -Đoạn chứa