Professional Documents
Culture Documents
ĐỀ CƯƠNG ÔN TẬP LẬP TRÌNH HỢP NGỮ 1
ĐỀ CƯƠNG ÔN TẬP LẬP TRÌNH HỢP NGỮ 1
;nhap chuoi 1
lea dx,tb1
mov ah,09h
int 21h
lea dx,str1
mov ah,10
int 21h
xor cx,cx
check:
lea si,str1+2
mov cl,[str1+1]
lea di,tb2
lap:
xor ax,ax
mov al,[si]
cmp al,[di]
jne notsame
inc si
inc di
loop lap
lea dx,tb3
mov ah,9
int 21h
jmp Exit
notsame:
lea dx,tb4
mov ah,9
int 21h
jmp Exit
Exit:
mov ah,4ch
int 21h
main endp
end main
b. Bài làm:
.model small
.stack 100
.data
str1 DB 'moi nhap x: $'
str2 DB 'x! = $'
Er DB 'Sai dinh dang so$'
CRLF DB 10, 13, '$'
.code
main proc
mov ax, @data
mov ds, ax
lea dx, str1
call printString
call nhap
call endline
lea dx, str2
call printString
call calculate
call printNumber
mov ah, 4ch
int 21h
main endp
;---------------------
nhap proc
;vao: ban phim
;ra: ax
push bx
push dx
xor bx, bx
tieptuc:
mov ah, 1
int 21h
cmp al, 13
je thoat
cmp al, '0'
jb error
cmp al, '9'
ja error
and ax, 000fh
push ax
mov ax, 10
mul bl
mov bx, ax
pop ax
add bx, ax
jmp tieptuc
error:
mov ah, 9
lea dx, Er
int 21h
mov ah, 4ch
int 21h
thoat:
mov ax, bx
pop dx
pop bx
ret
nhap endp
;---------------------
calculate proc
;vao: ax
;ra: ax
push cx
push dx
xor dx, dx
mov cx, ax
mov ax, 1
tinhtiep:
mul cx
loop tinhtiep
pop dx
pop cx
ret
calculate endp
;---------------------
endline proc
push ax
push dx
mov ah, 9
lea dx, CRLF
int 21h
pop dx
pop ax
ret
endline endp
;---------------------
printNumber proc
;vao: ax
;ra: man hinh
push bx
push cx
push dx
mov bx, 10
mov cx, 0
xor dx, dx
XULY:
div bx
inc cx
push dx
xor dx, dx
cmp ax, 0
jz INRA
jmp XULY
INRA:
mov ah, 2
pop dx
add dx, '0'
int 21h
loop INRA
pop dx
pop cx
pop bx
ret
printNumber endp
;---------------------
printString proc
push ax
mov ah, 9
int 21h
pop ax
ret
printString endp
end main
Viết chương trình hợp ngữ với chức năng sau:
a. Nhập vào mã sinh viên và hiển thị đúng tên của mình.
b. Tính tổng các phần tử trong chuỗi số.
b)Giải:
;tong cac phan tu trong chuoi so
.model tiny
.stack 100h
.data
tb1 db 13,10,'tong cac phan tu trong chuoi:$'
st2 db 13,10,'$'
m db 1,2,3,4,5,6,7,8,9
a db 0
.code
main proc
mov ax,@data
mov ds,ax
lea dx,tb1
mov ah,9
int 21h
lap:
mov al,[si]
mov bl,a
add al,bl
mov a,al
inc si
loop lap
inso:
pop dx
mov ah,2 ;chi in dc 1 ki tu
int 21h
loop inso
mov ah,4ch
int 21h
main endp
end main
mov ah,9
lea dx,msg1
int 21h
xor cx,cx
mov cl,10 ;thay n vao day
lea si, chuoiso
mov ax,13
push ax
ktra:
xor ah,ah
mov al, [si]
xor dx,dx
div n
inc si
cmp ah,0
jz chiahet
loop ktra
jmp exit
chiahet:
inc sum
dec cx
cmp cx,0
jz exit
jmp ktra
exit:
xor ax,ax
mov al,sum
mov bx,10
vao:
xor dx,dx
div bx
push dx
cmp ax,0
jz ra
jmp vao
ra:
pop dx
cmp dx,13
jz kt
mov ah,2
add dl,30h
int 21h
jmp ra
kt:
mov ah,4Ch
int 21h
main endp
end main
Xử lý chuỗi kí tự
Viết chương trình hợp ngữ với chức năng sau:
a. Nhập vào mã sinh viên và hiển thị đúng đúng tên của mình.
b. Đổi tất cả các ký tự in thường thành in HOA trong chuỗi ký tự nhập vào
từ bàn phím
Ys b:
.model small
.stack 100
.data
str db 256 dup('$')
tb1 db 0Dh, 0Ah, 'Chuyen sang chuoi in thuong: $' ;10, 13
tb2 db 0Dh, 0Ah, 'Chuyen sang chuoi in hoa: $'
.code
main proc
mov ax, @data
mov ds, ax
lea dx, str
;nhap chuoi
mov ah, 10
int 21h
mov ah, 9
lea dx, tb1
int 21h
call inthuong
mov ah, 9
lea dx, tb2
int 21h
call inhoa
inhoa proc
lea si, str+2
lap2:
mov dl, [si]
cmp dl, 'a'
jl in2
cmp dl, 'z'
jg in2
sub dl, 32
In2:
mov ah, 2
int 21h
inc si
cmp [si], '$'
jne lap2
RET
inhoa endp
end
.code
main proc
mov ax,@data
mov ds,ax
mov ah,9
lea dx, tb1
int 21h
mov ah,0ah
lea dx,mang
int 21h
mov cl,[mang + 1]
lea si, mang + 2
Lap:
push [si]
inc si
loop Lap
mov cl, [mang + 1]
Lap2:
pop dx
mov ah,2
int 21h
Loop Lap2
mov ah,4ch
int 21h
main endp
end main
MOV AH,09h
LEA DX,tb1
INT 21h
MOV AH,0AH
LEA DX,s
INT 21h
MOV AH,09h
LEA DX,tb2
INT 21h
XOR AX,AX
MOV AL,s+1 ;Chuyen chieu dai chuoi vao ax
MOV CX,0 ;Khoi tao bien dem
MOV BX,10
LapDem1:
MOV DX,0 ;null
DIV BX
PUSH DX
INC CX
CMP AX,0
JNZ LapDem1
MOV AH,2
LapDem2:
POP DX
OR DL,'0' ;chuyen chu so -> so
INT 21H
LOOP LapDem2
MOV AH,4ch
INT 21h
END BEGIN
Xử lý tệp tin
Viết chương trình hợp ngữ với chức năng sau:
a. Nhập vào họ tên sinh viên và hiển thị đúng MSV của mình.
b. Tạo một tệp tin mới, tên tập tin nhập từ bàn phím, ghi nội dung vào tệp
tin nhập từ bàn phím.
DSEG SEGMENT
tenfile db 200 dup<?>,0
chuoi Db 100 DUP(0)
thefile dw ?
DSEG ENDS
CSEG SEGMENT
ASSUME cs:cseg, ds:dseg
begin:
mov ax, dseg
mov ds, ax
mov ah,1
lea si, tenfile
nhap:
int 21h
cmp al,0dh
jz abc
mov [si],al
inc si
jmp nhap
abc:
mov ah,3ch ; tao tap tin moi
mov cx, 020h ; thuoc tinh tap tin
lea dx, tenfile
int 21h
LAP:
MOV AH, 1 ; nhap ky tu
INT 21H
CMP AL,0Dh ;check dau enter
JE STOP
MOV chuoi[SI], AL
INC SI
JMP LAP
STOP:
mov ah, 3ch ; tao tap tin moi
lea dx, tenfile
mov cx, 0 ; tap tin co thuoc tinh binh thuong
int 21h
mov cx, si
mov thefile, ax ; cat the file
mov ah, 40h ; ghi file
mov bx, thefile
GHI_FILE:
;xor cx, cx
;mov cl, len
mov dh,0
mov dl, chuoi[SI]
;lea dx, string1
int 21h
LOOP GHI_FILE
mov ah, 3eh ; dong tap tin
mov bx, thefile
int 21h
mov ah, 4ch ; thoat ve Dos
int 21h
CSEG ENDS
END begin
Ghi file
dseg segment
chuoi Db 100 DUP(0)
len db $ - string1
tenfile db "E:\emu8086\MyBuild\e.txt",0
thefile dw ?
dseg ends
cseg segment
assume cs:cseg, ds:dseg
begin: mov ax, dseg
mov ds, ax
MOV SI, 0 ; chi so mang
MOV CX, 100 ; do dai mang max
LAP:
MOV AH, 1 ; nhap ky tu
INT 21H
CMP AL,0Dh ;check dau enter
JE STOP
MOV chuoi[SI], AL
INC SI
JMP LAP
STOP:
mov ah, 3ch ; tao tap tin moi
lea dx, tenfile
mov cx, 0 ; tap tin co thuoc tinh binh thuong
int 21h
mov cx, si
mov thefile, ax ; cat the file
mov ah, 40h ; ghi file
mov bx, thefile
GHI_FILE:
;xor cx, cx
;mov cl, len
mov dh,0
mov dl, chuoi[SI]
;lea dx, string1
int 21h
LOOP GHI_FILE
mov ah, 3eh ; dong tap tin
mov bx, thefile
int 21h
mov ah, 4ch ; thoat ve Dos
int 21h
cseg ends
end begin
dseg ends
cseg segment
assume cs:cseg, ds:dseg
begin:
mov ax, dseg
mov ds, ax