sử dụng phần mềm emu8086. Nhập vào một chuỗi kí tự thường. In ra chuỗi kí tự ngược với các kí tự là chuỗi in hoa. ai biết làm giúp mình với ạ :(

ADS
Trả lời câu hỏi của Anh Ngọc
  • Câu trả lời phải chính xác, đầy đủ dựa trên kiến thức xác thực:
    • ✔ Đối với câu hỏi trắc nghiệm: Đưa đáp án lựa chọn + giải thích lý do chọn đáp án.
    • ✔ Đối với câu hỏi tự luận: Đưa lời giải và đáp án cho câu hỏi.
    • ✔ Đối với câu hỏi trả lời ngắn: Đưa ra đáp án + giải thích lý do.
    • ✔ Chấp nhận sử dụng ảnh do thành viên viết tay, ảnh cần rõ nét, không bị mờ, vỡ ảnh.
  • Sử dụng ngôn ngữ rõ ràng, dễ hiểu.
  • Tránh đưa ra các ý kiến cá nhân mang tính chất chủ quan.
  • Nếu sử dụng thông tin từ nguồn khác, phải trích dẫn nguồn đầy đủ và chính xác.
  • Tuyệt đối không được sao chép các thông tin từ các trang khác, từ AI hoặc chatGPT.
ADS
CÂU TRẢ LỜI
avatar
Timi

13/01/2024

Trợ lý học tập AI - Câu trả lời này chỉ mang tính tham khảo
Để in ra chuỗi kí tự ngược với các kí tự là chuỗi in hoa trong phần mềm emu8086, bạn có thể sử dụng mã lệnh sau: ``` .model small .stack 100h .data inputString db 100 dup('') .code main proc mov ax, @data mov ds, ax ; Nhập chuỗi kí tự từ bàn phím mov ah, 0Ah lea dx, inputString int 21h ; In ra chuỗi kí tự ngược với các kí tự là chuỗi in hoa lea si, inputString lea di, outputString mov cl, [si+1] ; Độ dài của chuỗi mov ch, 0 add si, 2 ; Bỏ qua byte đầu tiên (độ dài của chuỗi) add di, cx ; Di chuyển con trỏ đến cuối chuỗi outputString reverseLoop: mov al, [si] cmp al, 'A' jb notUppercase cmp al, 'Z' ja notUppercase ; Nếu kí tự là in hoa, thì in kí tự thường add al, 32 jmp storeChar notUppercase: ; Nếu kí tự không phải là in hoa, thì in kí tự đó storeChar: mov [di], al dec di inc si loop reverseLoop ; In ra chuỗi kí tự ngược mov ah, 09h lea dx, outputString int 21h mov ax, 4C00h int 21h main endp end main ``` Lưu ý: Đoạn mã lệnh trên chỉ hoạt động trên phần mềm emu8086. Bạn có thể sao chép và dán vào một file mới với đuôi `.asm`, sau đó sử dụng phần mềm emu8086 để biên dịch và chạy chương trình.
Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận
avatar
level icon
lazzyy

13/01/2024

Dưới đây là cách thực hiện việc nhập vào một chuỗi ký tự thường và in ra chuỗi ký tự ngược với các ký tự là chuỗi in hoa sử dụng phần mềm emu8086:

Bước 1: Khai báo biến

Khai báo các biến cần thiết như sau:

char str[100]; // Chuỗi ký tự thường
char str_inv[100]; // Chuỗi ký tự ngược
char c; // Ký tự tạm thời
Bước 2: Nhập chuỗi ký tự thường

Sử dụng vòng lặp for để nhập chuỗi ký tự thường như sau:

for (int i = 0; i < 100; i++) {
   printf("Nhập ký tự thứ %d: ", i + 1);
   scanf("%c", &str[i]);
}
Bước 3: Đảo ngược chuỗi ký tự

Sử dụng vòng lặp for để đảo ngược chuỗi ký tự như sau:

for (int i = 0; i < strlen(str); i++) {
   c = str[strlen(str) - i - 1];
   str_inv[i] = c;
}
Bước 4: Chuyển đổi các ký tự thường thành ký tự in hoa

Sử dụng vòng lặp for để chuyển đổi các ký tự thường thành ký tự in hoa như sau:

for (int i = 0; i < strlen(str_inv); i++) {
   if (str_inv[i] >= 'a' && str_inv[i] <= 'z') {
       str_inv[i] -= 'a' - 'A';
   }
}
Bước 5: In ra chuỗi ký tự ngược

In ra chuỗi ký tự ngược như sau:

printf("Chuỗi ký tự ngược: ");
for (int i = 0; i < strlen(str_inv); i++) {
   printf("%c", str_inv[i]);
}
Ví dụ

Ví dụ, nếu nhập chuỗi ký tự thường là "hello", thì chương trình sẽ xuất ra chuỗi ký tự ngược là "OLLEH".

Dưới đây là mã nguồn đầy đủ của chương trình:

Đoạn mã
.model small
.stack 100h

.data
str db 100 dup(?)
str_inv db 100 dup(?)

.code

main proc
   mov ax, @data
   mov ds, ax

   ; Nhập chuỗi ký tự thường
   for:
       mov dx, offset str
       mov ah, 10
       int 21h

       cmp al, 13
       je end_for

       inc si
       jmp for

   end_for:

   ; Đảo ngược chuỗi ký tự
   for_inv:
       mov al, str[si - 1]
       mov str_inv[di], al
       inc si
       inc di

       cmp si, strlen(str)
       jne for_inv

   ; Chuyển đổi các ký tự thường thành ký tự in hoa
   for_upper:
       mov al, str_inv[di]
       cmp al, 'a'
       jb next

       cmp al, 'z'
       ja next

       sub al, 'a' - 'A'

   next:
       inc di
       jmp for_upper

   ; In ra chuỗi ký tự ngược
   mov dx, offset str_inv
   mov ah, 9
   int 21h

   mov ax, 4c00h
   int 21h

main endp

Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận
ADS
avatar
level icon

Anh Ngọc

Đây là một đoạn mã Assembly sử dụng phần mềm emu8086 để nhập vào một chuỗi kí tự thường và in ra chuỗi kí tự ngược với các kí tự là chuỗi in hoa. Dưới đây là đoạn mã mẫu:

```

.model small

.stack 100h

.data

message db 10, 13, 'Enter a string: $'

output db 10, 13, 'Reversed string with uppercase characters: $'

input db 100 dup('$')

reversed db 100 dup('$')

.code

main proc

mov ax, @data

mov ds, ax

; In thông báo yêu cầu nhập chuỗi lea dx, message mov ah, 09h int 21h ; Nhập chuỗi từ bàn phím lea dx, input mov ah, 0Ah int 21h ; In thông báo kết quả lea dx, output mov ah, 09h int 21h ; Đảo ngược chuỗi và in ra màn hình lea si, input + 1 lea di, reversed + 1 mov cx, [input] ; Độ dài chuỗi dec cx ; Giảm đi 1 để bỏ qua byte độ dài chuỗireverse_loop:

mov al, [si]

cmp al, 'a' ; Kiểm tra xem kí tự có phải là chữ cái thường không

jb not_lowercase

cmp al, 'z'

ja not_lowercase

sub al, 20h ; Chuyển chữ cái thường thành chữ cái in hoanot_lowercase:

mov [di], al ; Lưu kí tự vào chuỗi đảo ngược

inc si

dec di

loop reverse_loop

; In chuỗi đảo ngược ra màn hình lea dx, reversed + 1 mov ah, 09h int 21h mov ah, 4Ch int 21hmain endp

end main

```

Đoạn mã trên sử dụng hàm `int 21h` để nhập và in chuỗi. Nó lấy chuỗi đầu vào từ bàn phím, sau đó duyệt qua từng kí tự trong chuỗi và đảo ngược chuỗi. Nếu kí tự là chữ cái thường, nó sẽ chuyển đổi thành chữ cái in hoa trước khi lưu vào chuỗi đảo ngược. Cuối cùng, nó in ra chuỗi đảo ngược ra màn hình.

Bạn có thể sao chép đoạn mã trên và chạy trên phần mềm emu8086 để kiểm tra.

Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận

Nếu bạn muốn hỏi bài tập

Các câu hỏi của bạn luôn được giải đáp dưới 10 phút

Ảnh ads

CÂU HỎI LIÊN QUAN

logo footer
FQA.vn Nền tảng kết nối cộng đồng hỗ trợ giải bài tập học sinh trong khối K12. Sản phẩm được phát triển bởi CÔNG TY TNHH CÔNG NGHỆ GIA ĐÌNH (FTECH CO., LTD)
Điện thoại: 1900636019 Email: info@fqa.vn
Location Địa chỉ: Số 21 Ngõ Giếng, Phố Đông Các, Phường Ô Chợ Dừa, Quận Đống Đa, Thành phố Hà Nội, Việt Nam.
Tải ứng dụng FQA
app store ch play
Người chịu trách nhiệm quản lý nội dung: Nguyễn Tuấn Quang Giấy phép thiết lập MXH số 07/GP-BTTTT do Bộ Thông tin và Truyền thông cấp ngày 05/01/2024
Copyright © 2023 fqa.vn All Rights Reserved
gift-box
survey
survey
Đặt câu hỏi