tổng hợp

Màu nền
Font chữ
Font size
Chiều cao dòng

asm

đây là bài đổi màu chữ đầu dòng thành màu xanh. Đúng theo yêu cầu của thầy giáo.

.MODEL SMALL

.CODE

ORG 100H

START:

JMP DATA

DATA:

MOV BH,0 ;DAT SO TRANG MAN HINH

MOV DH,0 ;DAT CHI SO HANG

MOV DL,0 ;DAT CHI SO COT

LAP:

CMP DL,80

JE XUONG

MOV AH,2 ;DAT VI TRI CON TRO

INT 10H

MOV AH,8 ;DOC KY TU TAI VI TRI CON TRO

INT 10H ;MA ASSCI LUU TRONG AL

CMP AL,20H ;SO SANH VOI DAU CACH

JE TANG ;NEU BANG THI TANG BIEN DONG

;NEU KHONG PHAI DAU CACH THI DOI MAU

MOV AH,9 ;HAM DOI MAU

MOV CX,1 ;SO LAN LAP

MOV BL,2 ;MAU

INT 10H

JMP XUONG ;KHI DOI XONG THI XUONG DONG

TANG:

INC DL

JMP LAP

XUONG:

MOV DL,0

INC DH

CMP DH,25

JE EXIT

JMP LAP

EXIT:

INT 20H

END START

tìm a và A trên màn hình rồi đổi nó ra màu khác

.model small

.code

org 100h

tima proc

mov ax,0b800h

mov es,ax

xor di,di

mov cx,2000h

doia:

mov al,41h

scasb

jz doivang

dec di

mov al,61h

scasb

jz doivang

loop doia

jmp ketthuc

doivang:

mov al,5

stosb

jmp doia

ketthuc:

mov ah,1

int 21h

int 20h

tima endp

end tima

chuong trinh tinh n! voi n<10; chu y thao tac tren he 16

.model small

.code

org 100h

start Proc

jmp batdau

tb1 db ' nhap 1 so de tinh giai thua : 0dh $ '

tb2 db ' so ma ban vua nhap la $'

sohex dw 0

batdau:

mov ah,09

mov dx,offset tb1

int 21h

;nhap tung so 1

nhap:

mov ah,1

int 21h

sub al,30h

xor ah,ah

mov cx, ax

xor bx,bx

xor dx,dx

mov ax,1

nhan:

inc bx

mul bx

loop nhan

push ax

cmp dx,0

je insohex

cmp dl,9

jg inchu

add dl,30h

mov ah,2

int 21h

jmp xong

inchu:

add dl,37h

mov ah,2

int 21h

xong:

pop ax

mov bx,ax

insohex:

mov dl,bh

mov cl,4

shr dl,cl

inc dh

cmp dl,09

jg inso

add dl,30h

mov ah,2

int 21h

rol bx,cl

cmp dh,4

jl insohex

jmp ketthuc

inso:

add dl,37h

mov ah,2

int 21h

rol bx,cl

cmp dh,4

jl insohex

jmp ketthuc

ketthuc:

mov ah,1

int 21h

int 20h

start endp

end start

model small ;TRUNG BINH CUA N SO

.stack 0100h

.data

tb1 db 'nhap vao so chu so:$'

tb2 db 13,10, 'nhap so:$'

tb3 db 13,10, 'trung binh=:$'

n dw 0 ;so n

tong dw 0 ;tong

sodu dw 0 ;du

bien_trung_gian dw 0

xau db 12

dem db ?

text db 10 dup("$")

.code

main:

mov ax,@data

mov ds,ax ;tai sao no lai return den cho nay

;nhap n

thongbao tb1

mov ah,0ah

lea dx,xau

int 21h

call nhap_so

; pop ax lenh sai

mov ax,bien_trung_gian

mov n,ax

;nhap roi tinh tong luon

mov cx,n

nhap_cac_so_thanh_phan:

thongbao tb2

mov ah,0ah

lea dx,xau

int 21h

lea si,text

call nhap_so

; pop ax

mov ax,bien_trung_gian

add tong,ax

loop nhap_cac_so_thanh_phan

;tong da dc nho

chia:

mov ax,tong

mov bx,n

div bx

mov sodu,dx

push ax

thongbao tb3

pop ax

mov cx,0

inA:

mov dx,0

mov bx,10

div bx

inc cx

push dx

cmp ax,0

ja inA

;sau buoc tren ta co phan nguyen cua thuong so dat o trong ax

hien:

;phan nguyen

pop dx

add dx,30h

mov ah,2

int 21h

loop hien

;du

mov ax,sodu ;la so du cuoi cung

cmp ax,0

je exit

mov ah,2

mov dl,','

int 21h

mov cx,10 ;dung den 10 chu so sau dau phay

hien_du:

mov bx,10

mov ax,sodu

mul bx

mov bx,n

div bx

mov sodu,dx

mov dx,ax

mov ah,2

add dx,30h

int 21h

loop hien_du

exit:

mov ah,4ch

int 21h

nhap_so proc

xor ax,ax

mov si,offset text

lap1:

mov al,[si]

;hoac lenh mov al,byte ptr [si]

cmp al,13

je exit1

and al,0fh

add ax,bx

; push ax

;thay lenh push bang lenh sau

mov bien_trung_gian,ax

mov bx,10

mul bx

mov bx,ax

inc si

jmp lap1

exit1:

xor bx,bx

ret

nhap_so endp

end main

ở bài này bạn có thể tham khảo các đoạn code rất hay sử dụng như in , nhập , xử lý nhập , xử lý dư ,rồi ngăn xếp rồi hàm con,......

Nhập 2 số a, b từ bàn phím, tính tổng 2 số đó.

thu tuc nhap so hex ,so vua nhap nam trong ax

nhapsohex proc

push bx

push cx

push dx

jmp batdau1

tb4 db 0ah,0dh,[color= red;]' nhap 1 so o he 16 $ '[/color]

batdau1:

mov ah,09

mov dx,offset tb4

[color=blue;]int[/color] 21h

[color=blue;]xor[/color] bx,bx

nhap:

mov ah,1

[color=blue;]int[/color] 21h

cmp al,0Dh

je nhapxong

cmp al,40h

jg sulychu

sub al, 30h

mov cl,4

shl bx,cl

[color=blue;]or[/color] bl,al

jmp nhap

sulychu:

sub al,37h

mov cl,4

shl bx,cl

[color=blue;]or[/color] bl,al

jmp nhap

nhapxong:

mov ax,bx

pop dx

pop cx

pop bx

ret

nhapsohex endp

;-----

Bài 1: Viết chương trình hợp ngữ dạng .EXE thực hiện nhập vào từ bàn phím một ký tự, nếu không phải là ký tự số thì nhập lại. Sau đó nhiển thị ký tự vừa nhập trên dòng tiếp theo.

Bài 2:

...

Thử làm 1 bài đơn giản (chưa test), bạn làm các bài còn lại tương tự :

DOSSEG

.MODEL SMALL

.STACK 100h

.DATA

MoiNhap DB 'Nhap mot ky tu so n = ' , '$'

KoLaChuSo DB 'Ko phai , hay nhap lai ' , 13,10, '$'

LaChuSo DB 'Dung roi, so vua nhap la ' , 13,10, '$'

.CODE

MOV AX, @Data ; Dua cac du lieu

MOV DS, AX ; vao phan doan du lieu

NhapKyTu:

MOV DX, OFFSET MoiNhap ; Xuat mot chuoi tro boi DX

MOV AH, 9 ; bang chuc nang thu 9

INT 21h ; cua ngat 21h DOS

MOV AH, 1 ; Nhap mot ky tu vao AL

INT 21h ; bang chuc nang 1 cua ngat 21h DOS

CMP AL, '0' ; Kiem tra co phai chu so hay ko

JB KyTuKhac

CMP AL, '9'

JA KyTuKhac

ChuSo:

MOV DX, OFFSET LaChuSo

MOV AH, 9

INT 21h

JMP XuatKyTu

KyTuKhac:

MOV DX, OFFSET KoLaChuSo

MOV AH, 9

INT 21h

JMP NhapKyTu

XuatKyTu:

MOV AH, 2 ; Xuat mot ky tu bang

INT 21h ; chuc nang 2 cua ngat 21h DOS

MOV AH, 4Ch ; Ket thuc chuong trinh va tra

INT 21h ; ve DOS bang chuc nang 4Ch

END

Thiết kế hệ thống hiển thị sử dụng màn hình LCD character 40*4 hiển thị dòng chữ hello world với họ onchip 8051

#include <sfr51.inc>

;Goi thoi gian tre truoc khi gui du lieu/lenh ke tiep

;Cong P3 duoc noi toi chan du lieu D0-D7 cua LCD

;Chan P2.0 duoc noi toi chan RS cua LCD

;Chan P2.1 duoc noi toi chan R/W cua LCD

;Chan P2.2 duoc noi toi chan E cua LCD

mov a,#38h; LCD 2 dong

acall gui_lenh ;goi chuong trinh con gui_lenh

acall delay ;tao do tre cho LCD

mov a,#0Eh ;hien thi man hinh va con tro

acall gui_lenh ;goi chuong trinh con gui_lenh

acall delay ;tao do tre cho LCD

mov a,#01 ;xoa man hinh

acall gui_lenh ;

acall delay ;

mov a,#80h ;dua con tro ve dau dong 1

acall gui_lenh;

acall delay;

mov a,#'H';

acall ghi_du_lieu ;

acall delay;

mov a,#'E';

acall ghi_du_lieu ;

acall delay;

mov a,#'L';

acall ghi_du_lieu ;

acall delay;

mov a,#'L';

acall ghi_du_lieu ;

acall delay;

mov a,#'O';

acall ghi_du_lieu ;

acall delay;

mov a,#' ';

acall ghi_du_lieu ;

acall delay;

mov a,#'W';

acall ghi_du_lieu ;

acall delay;

mov a,#'O';

acall ghi_du_lieu ;

acall delay;

mov a,#'R';

acall ghi_du_lieu ;

acall delay;

mov a,#'L';

acall ghi_du_lieu ;

acall delay;

mov a,#'D';

acall ghi_du_lieu ;

acall delay;

again: sjmp again;

gui_lenh:

mov p3,a;

clr p2.0

clr p2.1

setb p2.2

clr p2.2

ret

ghi_du_lieu:

mov p3,a

setb p2.0

clr p2.1

setb p2.2

clr p2.2

ret

delay:

mov r3, #50

here2: mov r4,#255

here: djnz r4,here

djnz r3,here2

ret end

Lập chương trình nhập vào 1 số kiêu word in ra màn hình mã Hexa tương ứng của số đó

.model tiny

.stack 100h

.data

st1 db 'nhap so kieu word:$'

st2 db 13,10,'so do duoi dang hecxa:$'

a dw 0

.code

main proc

;

mov ax,@data

mov ds,ax

;

lea dx,st1

mov ah,9

int 21h

nhap:

mov ah,1

int 21h

cmp al,13

je inso

mov ah,0

sub al,30h

mov cx,ax

mov ax,a

mov bx,10

mul bx

add ax,cx

mov a,ax

jmp nhap

inso:

;

lea dx,st2

mov ah,9

int 21h

mov bx,16

mov ax,a

mov cx,0

chia:

mov dx,0

div bx

cmp dx,10

jae doi

add dx,30h

jmp cat

doi: add dx,37h

cat:

push dx

inc cx

cmp ax,0

je hien

jmp chia

hien:

pop dx

mov ah,2

int 21h

loop hien

ra:

mov ah,4ch

int 21h

main endp

end main

Lập chương trình nhập vào 1 số kiêu word in ra màn hình mã nhị phân tương ứng của số đó

.model tiny

.stack 100h

.data

st1 db 'Nhap so kieu WORD :$'

st2 db 13,10,'Ma nhi phan tuong ung:$'

so dw 0

.code

main proc

mov ax,@data

mov ds,ax

lea dx,st1

mov ah,9

int 21h ;In xau st1

nhap:

mov ah,1

int 21h

cmp al,13

je nhiphan

sub al,30h

mov ah,0

mov cx,ax

mov bx,10

mov ax,so

mul bx

add ax,cx

mov so,ax

jmp nhap

nhiphan:

lea dx,st2

mov ah,9

int 21h

mov cx,0

mov bx,2

mov ax,so

chia:

mov dx,0

div bx

add dx,30h

push dx

inc cx

cmp ax,0

je inso

jmp chia

inso:

pop dx

mov ah,2

int 21h

loop inso

ra:

mov ah,4ch

int 21h

main endp

end main

3.Thực hiện nhập vào 2 số tự nhiên nhỏ hơn 10. Tìm số lớn nhất trong 2 số và in kết quả ra màn hình trên dòng tiếp theo.

.model small

.stack 100h

.data

msg1 db 'nhap so thu nhat: $'

msg2 db 13,10,'nhap so thu 2: $'

msg3 db 13,10,'so lon nhat trong 2 so la: $'

.code

main proc

mov ax,@data

mov ds,ax

;nhap so thu nhat

mov ah,9

lea dx,msg1

int 21h

;nhap vao

mov ah,1

int 21h

and al,0fh

xor cx,cx

mov cl,al

;nhap so thu hai

mov ah,9

lea dx,msg2

int 21h

;nhap vao

mov ah,1

int 21h

and al,0fh

xor bx,bx

mov bl,al

;hien thi so lon nhat

mov ah,9

lea dx,msg3

int 21h

;so sanh

cmp bl,cl

jg ht1 ;lon hon

jl ht2 ;nho hon

ht1: add bl,30h

mov ah,2

mov dl,bl

int 21h

jmp thoat

ht2: add cl,30h

mov ah,2

mov dl,cl

int 21h

thoat: ;tro ve dos

mov ah,4ch

int 21h

main endp

end main

Bạn đang đọc truyện trên: Truyen2U.Pro