Giải Bài Tập Môn Vi Xử Lý - TaiLieu.VN

OPTADS360 intTypePromotion=1 zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn tailieu.vn NÂNG CẤP Đăng Nhập | Đăng Ký Chủ đề »
  • CDMA là gì
  • Mạng truyền thông công nghiệp
  • Xử lý tín hiệu số
  • Hệ thống viễn thông
  • Thông tin quang
    • Mạch khuếch đại
  • HOT
    • FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo...
    • LV.26: Bộ 320 Luận Văn Thạc Sĩ Y...
    • CEO.29: Bộ Tài Liệu Hệ Thống Quản Trị...
    • CEO.24: Bộ 240+ Tài Liệu Quản Trị Rủi...
    • LV.11: Bộ Luận Văn Tốt Nghiệp Chuyên...
    • CEO.27: Bộ Tài Liệu Dành Cho StartUp...
    • FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế...
    • CMO.03: Bộ Tài Liệu Hệ Thống Quản Trị...
    • TL.01: Bộ Tiểu Luận Triết Học
    FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh...
TUYỂN SINH YOMEDIA ADSENSE Trang Chủ » Kỹ Thuật - Công Nghệ » Kĩ thuật Viễn thông Giải bài tập môn Vi xử lý

Chia sẻ: Nguyen Quoc Huy | Ngày: | Loại File: PDF | Số trang:31

Thêm vào BST Báo xấu 1.098 lượt xem 175 download Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bộ vi xử lí 8088 được khởi tạo đoạn ngăn xếp tại ss = 4200H . Giả thiết tại một thời điểm BP= OOFCH,,,đang trỏ vào định ngăn xếp. hãy tính địa chỉ và nội dung các byte nhớ trong ngăn xếp sau các lệnh sau: PUSH AX PUSH BX POP DX...

AMBIENT/ Chủ đề:
  • bài tập vi xử lí
  • kĩ thuật vi xử lí
  • MOV
  • ADD
  • mạch giải mã
  • địa chỉ đầu
  • địa chỉ cuối

Bình luận(0) Đăng nhập để gửi bình luận!

Đăng nhập để gửi bình luận! Lưu

Nội dung Text: Giải bài tập môn Vi xử lý

  1. VNPT ------------------------------- HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG TP.HỒ CHÍ MINH Giải bài tập Vi xử lý Phần 1: Kỹ thuật vi xử lý 1. Bộ vi xử lý 8088 được khởi tạo đoạn ngăn xếp tại SS = 4200H. Giả thiết tại một thời điểm BP=00FCH, BX=1234H, AX= 2006H, CX= 5566H, SP=0100H đang trỏ vào đỉnh ngăn xếp. Hãy tính địa chỉ và nội dung các byte nhớ trong ngăn xếp sau các lệnh sau: PUSH AX PUSH BX POP DX PUSH CX MOV DL,[BP] POP SI Giải: Coi độ lớn Stack là 1 byte và lưu trữ theo Little endian. + Ban đầu: Địa chỉ Nội dung SP 0100H … … SS 4200H + PUSH AX SP 00FEH 06H 00FFH 20H 0100H … … SS 4200H 1
  2. + PUSH BX SP 00FCH 34H 00FDH 12H 00FEH 06H 00FFH 20H 0100H … … SS 4200H + POP DX SP 00FEH 06H 00FFH 20H 0100H … … SS 4200H + PUSH CX SP 00FCH 66H 00FDH 55H 00FEH 06H 00FFH 20H 0100H … … SS 4200H + MOV DL,[BP] – ngăn xếp không thay đổi SP 00FCH 66H 00FDH 55H 00FEH 06H 00FFH 20H 0100H … … SS 4200H + POP SI SP 00FEH 06H 00FFH 20H 0100H … … SS 4200H 2
  3. 3
  4. 2. Bộ vi xử lý 8088 được khởi tạo đoạn dữ liệu tại DS = 4200H. Giả thiết tại một thời điểm BX=ABF8H, SI=4E5CH, DI= 13C2H. Hãy tính địa chỉ toán hạng nguồn của các lệnh sau : a) MOV AL,[BX]+5 b) ADD AL,[3A5CH] c) MOV CL,[DI+7] d) MOV BX,[SI+BX+0FH] Giải: a) Chế độ địa chỉ tương đối cơ sở 4200H:ABFDH = 4CBFDH b) Chế độ địa chỉ trực tiếp 4200H:3A5CH = 45A5CH c) Chế độ địa chỉ tương đối chỉ số 4200H:13C9H = 433C9H d) Chế độ địa chỉ tương đối chỉ số cơ sở 4200H:FA63H = 51A63H 4
  5. 3. Cho nội dung các thanh ghi trong của 8088 như sau. AX= 94B3H ; BX=5AE4H ; CX= A4B7H ; DX= EA8DH. Hãy cho bi ết kết quả các phép toán sau và nội dung các cờ CF,OF,ZF sau mỗi phép toán a) ADD AX,BX b) SUB BX,CX c) ADD CL,DL d) OR BH,AL Giải: a) Kết quả: 94B3H 1001 0100 1011 0011 ADD 5AE4H 0101 1010 1110 0100 AX = EF97H 1110 1111 1001 0111 Cờ: CF = 0, OF = 0, ZF = 0 b) Kết quả: A4B7H 1010 0100 1011 0111 bù 1 0101 1011 0100 1000 bù 2 0101 1011 0100 1001 ADD 5AE4H 0101 1010 1110 0100 BX = B62DH 1011 0110 0010 1101 Cờ: CF = 0, OF = 1, ZF = 0 c) Kết quả: B7H 1011 0111 ADD 8DH 1000 1101 44H CL = 0100 0100 Cờ: CF = 1, OF = 1, ZF = 0 d) Kết quả: 5AH 0101 1010 OR B3H 1011 0011 FBH BH = 1111 1011 Cờ: CF = 0, OF = 0, ZF = 0 5
  6. 4. a) Hãy sử dụng các mạch giải mã 1/4, các mạch logic, các vi mạch EPROM 512B thiết kế bộ nhớ 2kB đặt địa chỉ cuối cùng là FFFFFH . b) Liệt kê địa chỉ của từng vi mạch EPROM. Giải: Dung lượng EPROM = 512B = 29B = 200H  9 chân địa chỉ (A0 – A8) Dung lượng bộ nhớ = 2kB = 211B = 4.29B = 800H  phải dùng 4 vi mạch EPROM 512B Địa chỉ đầu của bộ nhớ = Địa chỉ cuối của bộ nhớ - (Dung lượng bộ nhớ - 1) = FFFFFH – (800H – 1) = FF800H Mỗi vi mạch EPROM có dung lượng 200H nên địa chỉ của từng vi mạch EPROM là: IC 1: Địa chỉ đầu = FF800H Địa chỉ cuối = FF9FFH IC2: Địa chỉ đầu = FFA00H Địa chỉ cuối = FFBFFH IC3: Địa chỉ đầu = FFC00H Địa chỉ cuối = FFDFFH IC4: Địa chỉ đầu = FFE00H Địa chỉ cuối = FFFFFH Sơ đồ địa chỉ: A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 IO/M 1 1 1 1 1 1 1 1 1 0 000000000 0 IC1 1 1 1 1 1 1 1 1 1 0 011111111 1 1 1 1 1 1 1 1 1 1 0 100000000 0 IC2 1 1 1 1 1 1 1 1 1 0 111111111 1 1 1 1 1 1 1 1 1 1 1 000000000 0 0 IC3 1 1 1 1 1 1 1 1 1 1 011111111 1 1 1 1 1 1 1 1 1 1 1 100000000 0 IC4 1 1 1 1 1 1 1 1 1 1 111111111 1 địa chỉ địa chỉ mô đun nhớ nối // add bus IC Chọn mạch giải mã 1/4 (74LS139) Sơ đồ ghép nối: 6
  7. 5. Thiết kế bộ nhớ dung lượng 24KB từ các vi mạch ROM 8KB và bộ giải mã 74138 (1/8) ghép nối với bộ vi xử lý 8088 (Chế độ MIN) với địa chỉ đầu từ AA000H. Giải: Dung lượng ROM = 8KB = 213B = 2000H  13 chân địa chỉ (A0 – A12) Dung lượng bộ nhớ = 24KB = 6000H  cần dùng 3 vi mạch ROM để thiết kế Địa chỉ đầu bộ nhớ = AA000H Địa chỉ cuối bộ nhớ = Địa chỉ đầu + (Dung lượng – 1) = AA000H + 6000H – 1 = AFFFFH Mỗi vi mạch ROM có dung lượng 2000H nên địa chỉ đầu và cuối của mỗi vi mạch là: IC1: Địa chỉ đầu = AA000H Địa chỉ cuối = ABFFFH IC2: Địa chỉ đầu = AC000H Địa chỉ cuối = ADFFFH IC3: Địa chỉ đầu = AE000H Địa chỉ cuối = AFFFFH Sơ đồ địa chỉ: A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 IO/M 1 0 1 0 1 0 1 0 0 0 000000000 0 IC1 1 0 1 0 1 0 1 1 1 1 111111111 1 1 0 1 0 1 1 0 0 0 0 000000000 0 IC2 0 1 0 1 0 1 1 0 1 1 1 111111111 1 1 0 1 0 1 1 1 0 0 0 000000000 0 IC3 1 0 1 0 1 1 1 1 1 1 111111111 1 địa chỉ mô đun nhớ địa chỉ IC nối // add bus Chọn mạch giải mã 1/8 (74LS138) Sơ đồ nối: 7
  8. 6. Thiết kế mạch giải mã địa chỉ cho 8 cổng ra có địa chỉ 3A8H – 3AFH dùng các mạch giải mã 74139 (1/4). Giải: Mỗi mạch giải mã 1/4 có 4 cổng ra  cần dùng 2 mạch giải mã 1/4 để thiết kế. Sơ đồ địa chỉ: A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 IO/M 3A8H 1 1 1 0 1 0 1 0 0 0 3A9H 1 1 1 0 1 0 1 0 0 1 3AAH 1 1 1 0 1 0 1 0 1 0 3ABH 1 1 1 0 1 0 1 0 1 1 1 3ACH 1 1 1 0 1 0 1 1 0 0 3ADH 1 1 1 0 1 0 1 1 0 1 3AEH 1 1 1 0 1 0 1 1 1 0 3AFH 1 1 1 0 1 0 1 1 1 1 Địa chỉ cổng Chọn mạch giải mã 1/4 (74LS139) Sơ đồ nối: 8
  9. 7. Hệ vi xử lý 8088 có 2 vi mạch cổng PPI 8255A (Mỗi vi mạch có 4 địa chỉ).Hãy thiết kế mạch giải mã địa chỉ biết địa chỉ cơ sở của vi mạch 1 là 2B0H còn vi mạch 2 là 2B4H. Giải: Sơ đồ địa chỉ: A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 IO/M 2B0H 1 0 1 0 1 1 0 0 0 0 2B1H 1 0 1 0 1 1 0 0 0 1 2B2H 1 0 1 0 1 1 0 0 1 0 2B3H 1 0 1 0 1 1 0 0 1 1 1 2B4H 1 0 1 0 1 1 0 1 0 0 2B5H 1 0 1 0 1 1 0 1 0 1 2B6H 1 0 1 0 1 1 0 1 1 0 2B7H 1 0 1 0 1 1 0 1 1 1 Địa chỉ cổng Sơ đồ nối: 9
  10. 8. Cho vi mạch cổng 8255A có 4 cổng PA, PCA, PB, PCB. Hãy Viết đoạn chương trình đặt cấu hình cho các cổng ở mode 0 như sau: PA, PCA là cổng vào, còn PB, PCB là cổng ra. Giải: Vì ở mode 0 nên  MA1MA0 = 00 MB = 0 Vì PA, PCA là cổng vào  A = CA = 1 Vì PB, PCB là cổng ra  B = CB = 0 Vậy từ điều khiển là: IO/M M A1 MA0 A CA MB B CB 1 0 0 1 1 0 0 0  Từ điều khiển = 98H Đoạn chương trình đặt cấu hình cho các cổng: Định nghĩa các hằng: CW EQU 98H Cấu hình cho 8255A: ;đưa CWR vào DX MOV DX,CWR ;từ điều khiển chứa trong AL MOV AL,CW ;đưa từ điều khiển ra CWR OUT DX,AL 10
  11. Phần 2: Lập trình hợp ngữ A. Giải thích chương trình 1. Cho đoạn chương trình hợp ngữ sau, hãy giải thích từng lệnh (theo ngữ cảnh) và cho biết kết quả trên màn hình. ;Gán BH=41H (kí tự ‘A’) MOV BH,41H MOV BL,4 ;Gán BL=4 MOV AH,2 ;Gán AH=2 LAP: MOV CX,5 ;Gán CX=5 LAI: ;Chuyển nội dung BH vào DL MOV DL,BH ;Gọi ngắt 21H, in ra màn hình kí tự trong DL(=BH) INT 21H ;Lặp lại việc in ra màn hình kí tự trong DL 5 lần (CX=5) LOOP LAI MOV DL,’_’ ;Gán DL= kí tự ‘_’ ;Gọi ngắt 21H 3 lần, in ra màn hình 3 kí tự ‘_’ liên tiếp INT 21H INT 21H INT 21H ;Tăng BH 1 INC BH ;Giảm BL 1 DEC BL ;Nhảy tới nhãn LAP nếu cờ ZF chưa bật JNZ LAP Kết quả trên màn hình: AAAAA___BBBBB___CCCCC___DDDDD___ 2. Giải thích từng lệnh và viết kết quả trên màn hình của đoạn chương trình sau ;Gán BH=48 (kí tự ‘0’) MOV BH,48 MOV BL,4 ;Gán BL=4 FO1: MOV CX,5 ;Gán CX=5 MOV AH,2 ;Gán AH=2 FO2: ;Chuyển nội dung BH vào DL MOV DL,BH ;Gọi ngắt 21H, in ra màn hình kí tự trong DL (=BH) INT 21H ;Tăng DL 1 INC DL ;Lặp lại việc in ra màn hình kí tự trong DL 5 lần LOOP FO2 MOV DL,0AH ;Gán DL=0AH (LF) ;Gọi ngắt 21H, in kí tự điều khiển LF (tạo một dòng mới) INT 21H MOV DL,0DH ;Gán DL=0DH (CR) ;Gọi ngắt 21H, in kí tự điều khiển CR (về đầu dòng) INT 21H ;Tăng BH 1 INC BH ;Giảm BL 1 DEC BL ;Nhảy tới nhã FO1 nếu cờ ZF chưa bật JNZ FO1 Kết quả trên màn hình: 00000 11111 22222 33333 11
  12. 3. Cho đoạn chương trình hợp ngữ sau. .................................... .DATA M1 DB 0Bh,10h,15h,2DUP(?) B1 DB 10 .CODE Thu proc ................................... MOV AL,B1 ;AL = B1 = 10 (= 0Ah) ;BX trỏ tới M1 LEA BX,M1 ADD [BX+2],AL ;[BX+2] += AL (= M1[2] = 15h + 0Ah = 1Fh) ADD AL,[BX]+1 ;AL += [BX+1] (= 0Ah + 10h = 1Ah) MOV BX,3 ;BX = 3 MOV M1[BX],AL ;M1[3] = AL = 1Ah SUB B1,10h ;B1 -= 0Ah - 10h = FAh MOV AL,B1 ;AL = B1 = FAh INC BX ;BX += 1 = 4 MOV M1[BX],AL ;M1[4] = AL = FAh .................................. Hãy cho biết giá tri mới của mảng M1 sau các lệnh trên. M1: 0Bh,10h,1Fh,1Ah,FAh 12
  13. 4. Cho đoạn chương trình hợp ngữ sau. ................................. .DATA M1 DB ‘t’,’h’,’i’,’l’,’a’,’i’,2 DUP(‘*’) B1 DB 20H .CODE ................................... MOV AL,B1 ;Gán AL = B1 = 20H ;BX trỏ tới M1 LEA BX,M1 MOV CX,6 ;Gán CX = 6 LAP: ;[BX] -= AL = [BX] – 20H (chữ thường thành chữ hoa) SUB [BX],AL ADD BX,1 ;BX += 1 ;Lặp lại 6 lần LOOP LAP ................................... MOV AH,2 ;Gán AH = 2 MOV BX,0 ;Gán BX = 0 MOV CX,8 ;Gán CX = 8 LAI: MOV DL,M1[BX] ;Gán DL = M1[BX] ;In ra màn hình kí tự trong DL INT 21H ;Tăng BX 1 INC BX ;Lặp lại quá trình trên 8 lần (CX = 8) LOOP LAI Hãy cho biết giá tri mới của mảng M1 sau các lệnh trên và kết quả trên màn hình. M1: ‘T’,’H’,’I’,’L’,’A’,’I’,’*’,’*’ Kết quả trên màn hình: THILAI** 13
  14. 5. Giải thích từng lệnh và viết kết quả trên màn hình của đoạn chương trình sau ;Gán BH = 41H (kí tự ‘A’) MOV BH,41H MOV BL,4 ;Gán BL = 4 MOV AH,2 ;Gán AH = 2 LAP: MOV CX,5 ;Gán CX = 5 LAI: ;Chuyển nội dung BH vào DL MOV DL,BH ;Gọi ngắt 21H, in ra màn hình kí tự trong DL INT 21H ;DL OR 20H (chuyển chữ hoa thành chữ thường) OR DL,20H ;Gọi ngắt 21H, in ra màn hình kí tự trong DL INT 21H ;Lặp lại quá trình trên 5 lần (CX = 5) LOOP LAI MOV DL,’_’ ;Gán DL = ‘_’ ;Gọi ngắt 21H 3 lần, in ra 3 lần kí tự ‘_’ INT 21H INT 21H INT 21H ;Tăng BH 1 INC BH ;Giảm BL 1 DEC BL ;Nhảy tới nhãn LAP nếu cờ ZF bật JNZ LAP …………………. Kết quả trên màn hình: AaAaAaAaAa___BbBbBbBbBb___CcCcCcCcCc___DdDdDdDdDd___ 14
  15. 6. Giải thích từng lệnh và viết kết quả trên màn hình của đoạn chương trình sau ;Gán BH = 0AH (kí tự điều khiển LF) MOV BH,0AH ;Gán DL = 39H (kí tự ‘9’) MOV DL,39H ;DL += BH = 39H + 0AH = 43H (kí tự ‘C’) ADD DL,BH MOV CX,5 ;Gán CX = 5 MOV AH,2 ;Gán AH = 2 LAP: ;Gọi ngắt 21H, in ra màn hình kí tự trong DL INT 21H ;Lặp lại quá trình trên 5 lần (CX = 5) LOOP LAP ;Đổi chỗ giá trị trong BH và DL (BH = 43H, DL = 0AH) XCHG BH,DL ;Gọi ngắt 21H, in ra màn hình kí tự trong DL (kí tự LF) INT 21H ;Gán DL = 0DH (kí tự điều khiển CR) MOV DL,0DH ;Gọi ngắt 21H, in ra màn hình kí tự trong DL (kí tự CR) INT 21H MOV CX,8 ;Gán CX = 8 MA: XOR DL,DL ;DL XOR DL (Xóa DL = 0) ROL BH,1 ;Quay trái BH 1, CF = MSB ;Quay trái DL qua cờ CF 1, LSB = CF RCL DL,1 ;DL += 30H (đổi số thành mã ASCII) ADD DL,30H ;Gọi ngắt 21H, in ra màn hình kí tự trong DL INT 21H ;Lặp lại quá trình trên 8 lần (CX = 8) LOOP MA Kết quả trên màn hình: CCCCC 01000011 15
  16. B. Bài tập lập trình 1. Viết chương trình hợp ngữ đầy đủ thực hiện công việc sau - Thông báo để vào một dòng chữ bất kỳ, kết thúc bằng Enter. - Vào một dòng chữ. - Đếm số chữ hoa trong dòng. - Nếu không có chữ hoa hiển thị thông báo “Không có chữ hoa”. - Ngược lại hiển thị số chữ hoa lên màn hình.(giả thiết số chữ hoa không quá 9). - Về DOS. Giải: .MODEL SMALL .STACK 100H .DATA 'Vao mot dong chu bat ki: $’ S1 DB ‘Khong co chu hoa$’ S2 DB 0AH,0DH,’$’ S3 DB .CODE MAIN PROC MOV AX,@DATA ;Khởi tạo DS MOV DS,AX ;In ra thông báo để vào một dòng chữ bất kì MOV AH,9 LEA DX,S1 INT 21H ;Bắt đầu đọc kí tự vào MOV AH,1 ;CX chứa số chữ hoa trong dòng XOR CX,CX LAP1: ;Đọc một kí tự INT 21H ;Xem có phải là Enter không? CMP AL,0DH ;Nếu là Enter thì nhảy tới nhãn TIEP1 JE TIEP1 ;Xem có ’Z’ không? CMP AL,5AH ;Nếu lớn hơn thì nhảy tới nhãn NOTUPPER JG NOTUPPER ;Nếu
  17. ;Xem CX có bằng 0 không? CMP CX,0 ;Nếu CX = 0, nhảy tới nhã NOUPPER JE NOUPPER ; Nếu CX 0, chuyển số chữ hoa trong CX sang DX MOV DX,CX ;Đổi sang kí tự số ADD DL,30H MOV AH,2 ;In ra số chữ hoa INT 21H ;Nhảy tới nhãn EXIT JMP EXIT NOUPPER: ;Nếu không có chữ hoa, in ra thông báo S2 MOV AH,9 LEA DX,S2 INT 21H EXIT: ;Trả lại điều khiển cho hệ thống MOV AH,4CH INT 21H MAIN ENDP END MAIN 17
  18. 2. Cho một mảng số liệu có tên M1 gồm 50 phần tử cỡ WORD. Viết chương trình hợp ngữ đầy đủ đếm và hiển thị số lượng phần tử là số âm lên màn hình. (Giả thiết có chương trình con hiển thị số hệ 10 tên là IN_DEC, số cần hiển thị để trong AX.) Giải: .MODEL SMALL .STACK 100H .DATA M1 DW -10,-9,2,-3,5,45 DUP(-1) .CODE MAIN PROC MOV AX,@DATA ;Khởi tạo DS MOV DS,AX ;CX chứa số số âm XOR CX,CX ;BX đóng vai trò chỉ số khi chạy trong mảng XOR BX,BX ;SI trỏ vào đầu mảng M1 LEA SI,M1 LAP1: ;So sánh BX với 50 CMP BX,50 ;Nếu BX = 50 nhảy tới nhãn TIEP1 JE TIEP1 ;AX = phần tử trỏ bởi SI MOV AX,[SI] ;So sánh AX với 0 CMP AX,0 ;Nếu AX>=0, nhảy tới nhãn SO_DUONG JGE SO_DUONG ;Nếu AX=0, nhảy tới SODUONG JGE SODUONG ;Nếu AX
  19. INT 21H ;Lấy lại số âm trong AX POP AX ;Rồi đổi dấu số âm trong AX thành số dương NEG AX SODUONG: ;CX chứa số chữ số của số cần in XOR CX,CX MOV BX,10 ;Gán BX = 10 LAY_SO_DU: ;Chuẩn bị cho phép chia DXAX cho 10 XOR DX,DX DIV BX ;Chia AX cho 10 ;Số dư cất vào Stack PUSH DX ;Tăng số chữ số lên 1 INC CX ;So sánh thương với 0 CMP AX,0 ;Nếu 0 thì lặp lại quá trình chia DXAX cho 10 JNE LAY_SO_DU ;In ra các chữ số của AX MOV AH,2 IN_SO_DU: ;Lấy các số dư khi chia DXAX cho 10 POP DX ;Đổi thành kí tự số trong bảng ASCII OR DL,30H INT 21H ;In ra ;Lặp lại số lần bằng số chữ số của AX LOOP IN_SO_DU ;Khôi phục các thanh ghi POP DX POP CX POP BX POP AX RET IN_DEC ENDP END MAIN 19
  20. 3. Cho một mảng số liệu có tên M1 gồm 80 phần tử, mỗi phần tử cỡ 1 BYTE chứa 1 kí tự. Viết chương trình hợp ngữ đầy đủ làm các công việc sau: + Vào một dòng kí tự lưu trong mảng. + Đếm và hiển thị những kí tự là chữ số ở dòng tiếp theo. Giải: .MODEL SMALL .STACK 100H .DATA M1 DB 80 DUP(0) ‘Vao mot dong ki tu: $’ S1 DB ‘So chu so: $’ S2 DB ‘Cac chu so: $’ S3 DB 13,10,’$’ CRLF DB .CODE MAIN PROC MOV AX,@DATA ;Khởi tạo DS MOV DS,AX ;In ra thông báo vào một dòng kí tự MOV AH,9 LEA DX,S1 INT 21H ;CX chứa số chữ số XOR CX,CX ;SI trỏ vào đầu mảng M1 LEA SI,M1 MOV AH,1 LAP1: ;Đọc các kí tự nhập vào INT 21H ;Xem có phải phím Enter không CMP AL,0DH ;Nếu đúng thì nhảy đến nhãn TIEP1 JE TIEP1 ;Lưu kí tự đọc được vào ô nhớ trỏ bởi SI MOV [SI],AL ;Tăng SI 1 (do các phần tử trong mảng kiểu BYTE) INC SI ;So sánh kí tự nhập vào với ‘0’ CMP AL,48 ;Nếu nhỏ hơn thì đọc kí tự tiếp theo JL LAP1 ;So sánh kí tự nhập vào với ‘9’ CMP AL,57 ;Nếu lớn hơn thì đọc kí tự tiếp theo JG LAP1 ;Nếu < ‘9’ thì tăng số chữ số lên 1 INC CX ;Đọc kí tự tiếp theo JMP LAP1 TIEP1: MOV [SI],’$’ ;Gán cho kí tự cuối cùng của xâu là ‘$’ ;In ra chuỗi CRLF, xuống dòng MOV AH,9 LEA DX,CRLF 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

LV.15: Bộ Đồ Án Tốt Nghiệp Chuyên Ngành Cơ Khí 65 tài liệu 2431 lượt tải
  • Bài tập và bài giải môn vi xử lý chương 1

    doc 60 p | 1289 | 318

  • Đề cương ôn tập môn vi xử lý

    doc 65 p | 353 | 116

  • Đề cương môn Vi xử lý

    doc 7 p | 372 | 97

  • Câu hỏi ôn tập môn học: Vi xử lý và vi điều khiển

    doc 14 p | 383 | 35

  • Thiết kế máy thu phát ký tự 8 bit, chương 1

    pdf 5 p | 144 | 31

  • Bài tập ôn thi học kỳ – Môn học: Vi xử lý – AY1213-S2

    pdf 8 p | 134 | 8

  • Đáp án đề thi học kỳ 2 năm học học 2013 - 2014 môn Vi xử lý

    pdf 8 p | 82 | 4

Thêm tài liệu vào bộ sưu tập có sẵn: Đồng ý Thêm vào bộ sưu tập mới: *Tên bộ sưu tập Mô Tả: *Từ Khóa: Tạo mới Báo xấu
  • Hãy cho chúng tôi biết lý do bạn muốn thông báo. Chúng tôi sẽ khắc phục vấn đề này trong thời gian ngắn nhất.
  • Không hoạt động
  • Có nội dung khiêu dâm
  • Có nội dung chính trị, phản động.
  • Spam
  • Vi phạm bản quyền.
  • Nội dung không đúng tiêu đề.
Hoặc bạn có thể nhập những lý do khác vào ô bên dưới (100 ký tự): Vui lòng nhập mã xác nhận vào ô bên dưới. Nếu bạn không đọc được, hãy Chọn mã xác nhận khác.. Đồng ý LAVA AANETWORK THÔNG TIN
  • Về chúng tôi
  • Quy định bảo mật
  • Thỏa thuận sử dụng
  • Quy chế hoạt động
TRỢ GIÚP
  • Hướng dẫn sử dụng
  • Upload tài liệu
  • Hỏi và đáp
HỖ TRỢ KHÁCH HÀNG
  • Liên hệ
  • Hỗ trợ trực tuyến
  • Liên hệ quảng cáo
Theo dõi chúng tôi

Chịu trách nhiệm nội dung:

Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA

LIÊN HỆ

Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM

Hotline: 093 303 0098

Email: support@tailieu.vn

Giấy phép Mạng Xã Hội số: 670/GP-BTTTT cấp ngày 30/11/2015 Copyright © 2022-2032 TaiLieu.VN. All rights reserved.

Đang xử lý... Đồng bộ tài khoản Login thành công! AMBIENT

Từ khóa » Bài Tập Vi Xử Lý 8086 Có Lời Giải