Diễn đàn hỏi đáp học thuật - Download Tài Liệu Miễn Phí
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Diễn đàn hỏi đáp học thuật - Download Tài Liệu Miễn PhíĐăng Nhập

VỮNG TIN - TIẾP BƯỚC - THÀNH CÔNG


descriptionHỏi đáp EmptyHỏi đáp

more_horiz
Thầy, cô cho em hỏi, trong Hợp Ngữ, muốn nhập 1 chuỗi kí tự và xuất chuỗi kí tự đó ra màn hình có phải viết thế này không ạh?

Code:


.model small
.stack
.data   
   s1 db 'Nhap vao 1 chuoi ki tu: $'
   s2 db 13,10,24h
   max = 100
   s db max+1,?,max+2 dup('$')
.code
   main proc
      mov AX,@data
      mov DS,AX
      
      ;xuat
      mov AH,9h
      lea DX,s1
      int 21h
      
      ;nhap chuoi
      mov AH,0Ah
      lea DX,s
      int 21h
      
      ;xuongdong
      mov AH,9h
      lea DX,s2
      int 21h
      
      ;xuat chuoi
      lea DX,s+2
      mov AH,9h
      int 21h
      
      mov AH,4Ch
      int 21h
   main endp
end main

Em chạy thử thì nó ra đúng, nhưng mà em không biết có đúng bài bản không nữa! tại em chưa học Very Happy

Với lại cho em hỏi, muốn xuất độ dài của chuỗi thì làm sao ạh? viết code dùm em luôn ạh! em cám ơn! Smile

descriptionHỏi đáp EmptyRe: Hỏi đáp

more_horiz
Ở đây mình hướng dẫn cơ bản cho bạn. Với độ dài chuỗi nhỏ hơn 10 với độ dài chuỗi lớn hơn 10 mình phải viết hàm đổi từ số sang chuỗi số.

Code:

.model small
.stack
.data 
  s1 db 'Nhap vao 1 chuoi ki tu: $'
  s2 db 13,10,24h
  s3 db 13,10,'Chieu dai thuc su cua chuoi: $'
  max = 100
  s db max+1,?,max+2 dup('$')
.code
  main proc
      mov AX,@data
      mov DS,AX
     
      ;xuat
      mov AH,9h
      lea DX,s1
      int 21h
     
      ;nhap chuoi
      mov AH,0Ah
      lea DX,s
      int 21h
     
      ;xuongdong
      mov AH,9h
      lea DX,s2
      int 21h
     
      ;xuat chuoi
      lea DX,s+2
      mov AH,9h
      int 21h

      ;xuat s3
      mov AH,9h
      lea DX,s3
      int 21h

      ;xuat chieu dai
      lea si,s
      mov ah,02h
     mov dl,[si+1]
      add dl,30h
      int 21h
     
      mov AH,4Ch
      int 21h
  main endp
end main


Khi bạn khai báo:
max = 100
s db max+1,?,max+2 dup('$')
Sau khi bạn nhập chuỗi s bạn sẽ lấy độ dài chuỗi như sau
lea si, s
mov dl,[si+1]
lúc đó giá trị thanh ghi dl chứa độ dài chuỗi (là ô nhớ thứ 2 trong khai báo chuỗi s của bạn - tưng ứng là chỗ khai báo có ký tự '?'

descriptionHỏi đáp EmptyRe: Hỏi đáp

more_horiz
em hiểu rồi, em cảm ơn thầy rất nhiều! Very Happy

descriptionHỏi đáp EmptyRe: Hỏi đáp

more_horiz
THầy cô cho em hỏi em muốn in một số thập phân ra màn hình và hiển thi đúng như vậy thì làm như thế nào?
Chẳng hạn: 366h => 366

descriptionHỏi đáp EmptyRe: Hỏi đáp

more_horiz
336h (he 16) khac voi 366 (he 10). Muon lam bai toan nay thi don gian tach tung so ra va cong no voi 40 se tro thanh ma assci cua ky tu roi xuat ra man hinh.

descriptionHỏi đáp EmptyRe: Hỏi đáp

more_horiz
admin đã viết:
336h (he 16) khac voi 366 (he 10). Muon lam bai toan nay thi don gian tach tung so ra va cong no voi 48 se tro thanh ma assci cua ky tu roi xuat ra man hinh.


Dạ em làm đc rồi nhưng mà là cộng với 30h chứ ạ Very Happy

descriptionHỏi đáp EmptyRe: Hỏi đáp

more_horiz
Em cộng vào cho bằng mã ASCII của ký tự từ 0 đến 9 là ok! Mã ASCII của 0 là 30h = 48 trong hệ thập phân.

descriptionHỏi đáp EmptyRe: Hỏi đáp

more_horiz
privacy_tip Permissions in this forum:
Bạn không có quyền trả lời bài viết
power_settings_newLogin to reply