Chương 4 - Các chỉ thị chuỗi, dữ liệu nhị phân và ÁC II

18 4 0
Chương 4 - Các chỉ thị chuỗi, dữ liệu nhị phân và ÁC II

Đ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

Tham khảo tài liệu ''chương 4 - các chỉ thị chuỗi, dữ liệu nhị phân và ác ii'', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chương 4: Các thị chuỗi, liệu nhị phân vaø ASCII Các đặc trưng thị chuỗi - Một thị chuỗi xử lý byte, từ hay từ kép Các thị chuỗi sử dụng ghi DS:SI ES:DI, SI DI chứa địa offset thị chuỗi thường sử dụng: MOVS di chuyển byte, từ từ kép từ vi trí đến vị trí khác nhớ LODS nạp từ nhớ byte vào AL, từ vào AX, từ kép vào EAX STOS cất nội dung ghi AL,AX EAX vào nhớ CMPS So sánh vùng nhớ nhớ theo byte, từ hay từ kép SCAS So sánh nội dung ghi AL,AX,EAX với nội dung vùng nhớ Chương 4: Các thị chuỗi, liệu nhị phân ASCII Chỉ thị MOVS * Chức năng: Di chuyển chuỗi (sao chép nội dung chuỗi) Thao tác Thanh ghi Vào Giá trị Điều kiện DI Địa vùng liệu đích ES:DI SI Địa vùng liệu nguồn DS:SI CX Số ký tự cần di chuyển * Ví dụ: Chép nội dung chuỗi N1 vào N2 (với N2 chuỗi rỗng) MODEL SMALL DATA N1 DB 'Assembler$' N2 DB 10 DUP(' ') MSG5 MSG6 DB 0Ah,0Dh,'Chuoi thu nhat=$' DB 0Ah,0Dh,'Chuoi thu hai=$' CODE MOV AX,@DATA MOV DS,AX MOV ES,AX CALL DICHUYEN CALL INKETQUA MOV AH,1 INT 21h MOV AH,4Ch INT 21h Chương 4: Các thị chuỗi, liệu nhị phân ASCII Chỉ thị MOVS DICHUYEN PROC NEAR INKETQUA PROC MOV CX,10 LEA DI,N2 LEA SI,N1 REP MOVSB MOV AH,9 RET LEA DX,N1 INT 21h DICHUYEN NEAR LEA DX,MSg5 INT 21h ENDP LEA DX,MSG6 INT 21h LEA DX,N2 INT 21h RET INKETQUA ENDP Demo Chương 4: Các thị chuỗi, liệu nhị phân ASCII Các thị thay đổi cờ hướng DF - Cờ hướng DF xác định hướng mà thị chuỗi lặp lại (0: trái sang phải, 1=phải sang trái) Các thị thiết lập cờ hướng: * Chỉ thị CLD: Xóa DF * Chỉ thị STD: Thiết lập cờ DF lên Ví dụ: STD MOV LEA LEA REP ;Thiết lập DF=1 CX,20 DI,S2 SI,S1 MOVSB Chương 4: Các thị chuỗi, liệu nhị phân ASCII Tiền tố lặp lại - REP Cho phép lặp lại việc thực thi thị dựa giá trị CX Sau lần lặp, CX giảm CX=0 Cờ hướng DF xác định hướng mà chuỗi lặp lại: * Xử lý từ trái sang phải: dùng thị CLD xóa cờ DF * Xử lý từ phải sang trái: dùng thị STD để thiết lập cờ DF Ví dụ: - CLD MOV LEA LEA REP CX,20 DI,STRING2 SI,STRING1 MOVSB  JCXZ LABEL2 MOV MOV INC INC LOOP LABEL2: AL,[SI] [DI],AL DI SI LABEL1 LABEL1: - Các lệnh khác: REPE/REPZ – REPNE/REPNZ ( Điều kiện Cờ ZF) Chương 4: Các thị chuỗi, liệu nhị phân ASCII Chỉ thị LODS * Chức năng: Nạp chuỗi - Nạp từ nhớ vào AL (byte), vào AX (từ) - Địa vùng liệu nạp vào DS:SI - Giảm/tăng nội dung SI (nạp byte), (nạp từ) với cờ DF Thao tác Thanh ghi Vào Giá trị Điều kiện DI Địa vùng liệu đích ES:DI SI Địa vùng liệu nguồn DS:SI CX Số ký tự cần nạp * Ví dụ: Chép nội dung chuỗi N1 vào N2 theo thứ tự ngược lại (với N2 CLD chuỗi rỗng) MOV CX,10 LEA SI,N1 LEA DI,N2+9 LAP: LODSB MOV [DI],AL DEC DI LOOP LAP Chương 4: Các thị chuỗi, liệu nhị phân vaø ASCII Chỉ thị STOS * Chức năng: Lưu chuỗi - Nạp nội dung AL (byte), AX (từ) vào nhớ - Địa vùng lưu liệu chứa vào ES:DI - Giảm/tăng nội dung DI (lưu byte), (lưu từ) với cờ DF Thao tác Thanh ghi Vào Giá trị Địa vùng liệu đích ES:DI DI CX Điều kiện Số ký tự cần nạp * Ví dụ: Lặp lần việc lưu từ chứa giá trị 2020h vào N1 CLD MOV MOV LEA REP CX,5 AX,2020h DI,N1 STOSW Chương 4: Các thị chuỗi, liệu nhị phân ASCII Chỉ thị CMPS * Chức năng: So sánh chuỗi - So sánh nội dung vùng nhớ DS:SI ES:DI - Giảm/tăng nội dung SI, DI (lưu byte), (lưu từ) với cờ DF - Chỉ so sánh giá trị ASCII Thao tác Thanh ghi Vào Giá trị Địa vùng liệu DS:SI, ES:DI SI, DI CX Điều kiện Số ký tự cần so sánh * Ví dụ: So sánh hai chuỗi N1 N2 CLD MOV LEA LEA REPE CX,10 SI,N1 DI,N2 CMPSB Chương 4: Các thị chuỗi, liệu nhị phân ASCII Các thị xử lý liệu nhị phân Dữ liệu có dấu khơng dấu - Các thị ADD, SUB khơng phân biệt liệu có dấu/khơng dấu không tác động lên cờ CF OF - Ví dụ: Nhị phân Khơng dấu Có dấu OF CF 11110001 249 -7 00000010 +2 +5 11111011 251 -5 0 Số nhớ - Phép cộng tạo số nhớ từ việc cộng bit cực trái - Ví dụ: Nhị phân Khơng dấu Có dấu OF CF 11111100 252 -4 00000101 +5 +5 11111011 +1 (sai) (đúng) Chương 4: Các thị chuỗi, liệu nhị phân ASCII Các thị xử lý liệu nhị phân Phép nhân nhị phân - Chỉ thị MUL thực nhân liệu không dấu Chỉ thị IMUL thực nhân liệu có dấu Ảnh hưởng cờ CF OF Cú pháp: MUL/IMUL Nhân byte với byte - Số hạng bị nhân lưu AL Số nhân lưu byte nhớ ghi khác Kết chứa AX Ví dụ: MUL DL Trước nhân Sau nhân AH AL (Số bị nhân) AX (Chứa tích số) Chương 4: Các thị chuỗi, liệu nhị phân ASCII Các thị xử lý liệu nhị phân Nhân từ với từ - Số hạng bị nhân lưu AX - Số nhân lưu từ nhớ ghi khác - Kết chứa DX:AX, với phần thấp chứa AX phần cao chứa DX - Ví dụ: MUL DX Trước nhân Sau nhân AX (Số bị nhân) DX AX Phần cao Phần thấp Tích số DX Chương 4: Các thị chuỗi, liệu nhị phân ASCII Các thị xử lý liệu nhị phân Nhân nhiều từ - Điều xảy nhân 1365 x 12? Nhân số hiệu với nhau, nghĩa là: nhân 13 65 cho 12, ta có: 13 x 12=156 65x12=780  Cộng tích số (với 13 vị trí hàng trăm nên x 100) 15600 + 780 = 16380 - Ứng dụng kỷ thuật để thực phép nhân kiểu liệu khác Chương 4: Các thị chuỗi, liệu nhị phân ASCII Các thị xử lý liệu nhị phân Nhân cách dịch bit Nhân số với lũy thừa (2,4,8, )  Dịch trái số bị nhân số bit tương ứng Ví dụ: - Nhân với (dịch trái bit): - Nhân với (dịch trái bit): SHL MOV SHL AX,01 CL,3 AX,CL Chương 4: Các thị chuỗi, liệu nhị phân ASCII Các thị xử lý liệu nhị phân Phép chia nhị phân - Chỉ thị DIV thực chia liệu không dấu Chỉ thị IDIV thực chia liệu có dấu Các phép chia bản: Chia từ/byte, Từ kép/từ, Ảnh hưởng cờ CF OF Cú pháp: DIV/IDIV Chia từ cho byte - Số bị chia lưu AX Số chia lưu byte nhớ ghi khác Kết chứa AL dư số chứa AH Ví dụ: DIV CL AX Số bị chia Trước chia Sau chia AH Dư số AL Thương số Chương 4: Các thị chuỗi, liệu nhị phân ASCII Các thị xử lý liệu nhị phân Chia từ kép cho từ - Số bị chia lưu DX:AX Số chia lưu từ nhớ ghi khác Kết chứa AX dư số chứa DX Ví dụ: DIV CX DX:AX Số bị chia Trước chia Sau chia DX Dư số AX Thương số Chương 4: Các thị chuỗi, liệu nhị phân ASCII Các thị xử lý liệu nhị phân Chia cách dịch bit Chia số với lũy thừa (2,4,8, )  Dịch phải số bị chia số bit tương ứng Ví dụ: - Chia với (dịch phải bit): - Chia với (dịch phải bit): SHR MOV SHR AX,01 CL,3 AX,CL Chương 4: Các thị chuỗi, liệu nhị phân ASCII Chỉ thị xử lý liệu ASCII - Các thị AAA, AAS trực tiếp hiệu chỉnh liệu ASCII Hiệu chỉnh giá trị AL lưu kết AX AAA dùng hiệu cỉnh sau thực phép cộng AAS dùng hiệu cỉnh sau thực phép trừ Cú pháp: AAA/AAS Ví dụ: MOV AL,35h SUB AL,30h Tương đương: MOV AL,35h AAA Để lấy lại kết ban đầu dạng ASCII, chèn số vào trước số bên trái AH AL: Ví dụ: OR AL,30h OR AX,3030h - Chương 4: Các thị chuỗi, liệu nhị phân ASCII Một số ví dụ ứng dụng thị Ví dụ: Chuyển đổi số N (0255) sang hệ nhị phân bit Demo ... Chương 4: Các thị chuỗi, liệu nhị phân ASCII Các thị xử lý liệu nhị phân Dữ liệu có dấu khơng dấu - Các thị ADD, SUB không phân biệt liệu có dấu/khơng dấu khơng tác động lên cờ CF OF - Ví dụ: Nhị phân. .. 11111011 +1 (sai) (đúng) Chương 4: Các thị chuỗi, liệu nhị phân ASCII Các thị xử lý liệu nhị phân Phép nhân nhị phân - Chỉ thị MUL thực nhân liệu không dấu Chỉ thị IMUL thực nhân liệu có dấu Ảnh hưởng... dụ: - Nhân với (dịch trái bit): - Nhân với (dịch trái bit): SHL MOV SHL AX,01 CL,3 AX,CL Chương 4: Các thị chuỗi, liệu nhị phân ASCII Các thị xử lý liệu nhị phân Phép chia nhị phân - Chỉ thị

Ngày đăng: 10/05/2021, 13:35

Tài liệu cùng người dùng

Tài liệu liên quan