Lệnh chuyển dữ liệu từ thanh ghi vào chuỗi (Stor ea String)

Một phần của tài liệu Tài liệu Bài giảng Hợp ngữ (Trang 73 - 75)

Lệnh này còn được gọi là lệnh lưu chuỗi. Cú pháp lệnh:

Dạng 1: STOSB

Lệnh trên chuyển nội dung của thanh ghi AL (1 byte) tới ô nhớ có địa chỉ ES:DI. Dạng 2: STOSW

Lệnh trên chuyển nội dung của thanh ghi AX (2 byte) tới ô nhớ có địa chỉ ES:DI. Ví dụ 1:

Xét chuỗi sau đây: .DATA

ChuoiKT DB 6 DUP (?)

Hãy nhập một kí tự từ bàn phím rồi đặt kí tựđó vào phần tửđầu tiên của chuỗi. Giải:

Ta sẽ sử dụng chức năng số 1 của ngắt 21h để nhập kí tự, thanh ghi AL sẽ chứa mã ASCII của kí tự đó. Muốn chuyển kí tự từ AL vào phần tửđầu tiên của chuỗi bằng lệnh STOSB thì ES:DI phải chứa địa chỉ đầu của ChuoiKT, điều đó được thực hiện nhờ lệnh sau:

LEA DI, ChuoiKT ;DI chứa offset của ChuoiKT Chương trình đầy đủ: TITLE Vi du Chuoi .MODEL SMALL .STACK 100H .DATA ChuoiKT DB 6 DUP (?) .CODE MAIN PROC

MOV AX, @DATA MOV DS, AX

MOV ES, AX ;DS và ES chứa segment của đoạn dữ liệu MOV AH, 1 ;Chức năng nhập kí tự của ngắt 21h

INT 21h

STOSB ;Chuyển kí tự từ AL vào đầu chuỗi MOV AH, 4Ch ;Kết thúc INT 21h MAIN ENDP END MAIN Ví dụ 2: Nhập một chuỗi 10 kí tự từ bàn phím. Giải:

Để nhập 10 kí tự và cất nó vào một chuỗi trong bộ nhớ ta vẫn sử dụng phương pháp như ví dụ 1. Có một sốđiểm khác biệt như sau:

+ Phải có một vòng lặp với số lần lặp bằng 10.

+ Sau mỗi lệnh lưu chuỗi (STOSB) thì DI phải được tăng lên 1 để trỏ tới ô nhớ tiếp theo. Điều này được thực hiện nhờ lệnh xoá cờđịnh hướng (CLD).

Chương trình đầy đủ: TITLE Vi du 2 .MODEL SMALL .STACK 100H .DATA ChuoiKT DB 10 DUP (?) .CODE MAIN PROC

MOV AX, @DATA MOV DS, AX

MOV ES, AX ;DS và ES chứa segment của đoạn dữ liệu MOV CX, 10 ;Số lần lặp bằng 10

LEA DI, ChuoiKT ;DI chứa offset của ChuoiKT CLD ;Xoá cờ định hướng: DF = 0 Lap:

MOV AH, 1 ;Chức năng nhập kí tự của ngắt 21h INT 21h

STOSB ;Chuyển kí tự từ AL vào đầu chuỗi ;DI được tự động tăng lên 1

LOOP Lap

MOV AH, 4Ch ;Kết thúc INT 21h

MAIN ENDP END MAIN

Một phần của tài liệu Tài liệu Bài giảng Hợp ngữ (Trang 73 - 75)

Tải bản đầy đủ (PDF)

(110 trang)