Viết chương trình hợp ngữ cho VXL 8086

18 60 1
Viết chương trình hợp ngữ cho VXL 8086

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Viết chương trình hợp ngữ cho VXL 8086, tính tổng, tìm số lớn nhất nhỏ nhất, tìm số chẵn lẻ, đổi số hex 4 chữ số sang số thập phân tương ứng Nhập vào hai số thập phân a và b, với a, b≤50, nhập lại nếu a, b không thỏa điều kiện. Tính và in ra tổng từ 1 đến số nhỏ hơn trong 2 số a và b.

Viết chương trình hợp ngữ cho VXL 8086 thực công việc sau: Nhập vào hai số thập phân a b, với a, b≤50, nhập lại a, b khơng thỏa điều kiện a Tính in tổng từ đến số nhỏ số a b b Tính in (a+b)^2 Viết chương trình nhập vào số nguyên dương a, b,c cho a,b,c≤50 a Hãy tìm in số lớn b Hãy tìm in số số chẵn Viết chương trình nhập vào số hexa tối đa chữ số, in hình giá trị thập phân tương ứng cua số vừa nhập Code mẫu 1: model small stack 100h data kytu1 db 10,13,"Nhap so a= $" kytu2 db 10,13,"Nhap so b= $" kytu3 db 10,13,"Ket qua tong= $" kytu4 db 10,13,"Ket qua (a+b)^2= $" x dw ? y dw ? d1 dw ? d2 dw ? d3 dw ? code main proc nhapsothu1: mov ax,@data mov ds,ax mov ah,9 lea dx,kytu1 int 21h call nhapso mov ax,x mov d1,ax cmp d1,50 jg nhapsothu1 nhapsothu2: mov ax,@data mov ds,ax mov ah,9 lea dx,kytu2 int 21h call nhapso mov ax,x mov d2,ax cmp d2,50 jg nhapsothu2 mov ax,d1 mov bx,d2 cmp ax,bx jp sosanhab mov cx,d2 cmp bx,ax jp caua sosanhab: mov cx,d1 caua: mov ax,0 mov bx,0 TONG: inc ax add bx,ax loop TONG mov x,bx mov ah,9 lea dx,kytu3 int 21h call hienthi mov ax,0 mov bx,0 add ax,d2 add ax,d1 mov ax,ax mov cx,ax mul cx mov x,ax mov ah,9 lea dx,kytu4 int 21h call hienthi mov ah,4ch int 21h main endp nhapso proc mov x,0 mov y,0 mov bx,10 nhap: mov ah,1 int 21h cmp al,13 je thoat sub al,30h xor ah,ah mov y,ax mov ax,x mul bx add ax,y mov x,ax jmp nhap thoat: ret nhapso endp hienthi proc mov bx,16 mov ax,x mov cx,0 tachso: mov dx,0 div bx inc cx push dx cmp al,0 je hthi jmp tachso hthi: pop dx cmp dl,9h ja chu add dl,30h mov ah,2 int 21h dec cx cmp cx,0 jne hthi ret chu: add dl,37h mov ah,2 int 21h dec cx cmp cx,0 jne hthi ret hienthi endp endp main Viết chương trình nhập vào số nguyên dương a, b,c cho a,b,c≤50 a Hãy tìm in số lớn b Hãy tìm in số số chẵn code mẫu 2: model small stack 100h data kytu1 db 10,13,"Nhap so a= $" kytu2 db 10,13,"Nhap so b= $" kytu3 db 10,13,"Nhap so c= $" kytu4 db 10,13,"So lon nhat la: $" kytu5 db 10,13,"So chan la: $" x dw ? y dw ? d1 dw ? d2 dw ? d3 dw ? code main proc nhapsothu1: mov ax,@data mov ds,ax mov ah,9 lea dx,kytu1 int 21h call nhapso mov ax,x mov d1,ax cmp d1,50 jg nhapsothu1 nhapsothu2: mov ax,@data mov ds,ax mov ah,9 lea dx,kytu2 int 21h call nhapso mov ax,x mov d2,ax cmp d2,50 jg nhapsothu2 nhapsothu3: mov ax,@data mov ds,ax mov ah,9 lea dx,kytu3 int 21h call nhapso mov ax,x mov d3,ax cmp d3,50 jg nhapsothu3 mov ax,d1 mov bx,d2 mov cx,d3 cmp ax,bx jg neuahonb cmp bx,ax jg neubhona neuahonb: cmp ax,cx jg ketthucss cmp cx,ax mov ax,cx jmp ketthucss neubhona: mov ax,bx cmp ax,cx jg ketthucss cmp cx,ax mov ax,cx jmp ketthucss ketthucss: mov x,ax mov ah,9 lea dx,kytu4 int 21h call hienthi mov ax,d1 mov bl,2 mov ah,0 div bl cmp ah,0 je inra1 jmp kiemtra: inra1: mov ax,d1; mov x,ax mov ah,9 lea dx,kytu5 int 21h call hienthi kiemtra: mov ax,d2 mov bl,2 mov ah,0 div bl cmp ah,0 je inra2 jmp kiemtra1: inra2: mov ax,d2; mov x,ax mov ah,9 lea dx,kytu5 int 21h call hienthi kiemtra1: mov ax,d3 mov bl,2 mov ah,0 div bl cmp ah,0 je inra3 inra3: mov ax,d3 mov x,ax mov ah,9 lea dx,kytu5 int 21h call hienthi mov ah,4ch int 21h main endp nhapso proc mov x,0 mov y,0 mov bx,10 nhap: mov ah,1 int 21h cmp al,13 je thoat sub al,30h xor ah,ah mov y,ax mov ax,x mul bx add ax,y mov x,ax jmp nhap thoat: ret nhapso endp hienthi proc mov bx,16 mov ax,x mov cx,0 chiatachso: mov dx,0 div bx inc cx push dx cmp al,0 je hienthiso jmp chiatachso hienthiso: pop dx cmp dl,9h ja chuyenso add dl,30h mov ah,2 int 21h dec cx cmp cx,0 jne hienthiso ret chuyenso: add dl,37h mov ah,2 int 21h dec cx cmp cx,0 jne hienthiso ret hienthi endp endp main Viết chương trình nhập vào số hexa tối đa chữ số, in hình giá trị thập phân tương ứng cua số vừa nhập .model small stack 100h data kytu1 db 10,13,'Nhap so hex co chu so: $' kytu2 db 10,13,'So thap phan là: $' kytu3 db 10,13,10,13,'Nhap so hex tiep tuc khong? (Y/N)? $' kytu4 db 10,13,'Ky tu khong hop le nhap 0-9 hoac A-F: $' hex db 5,?,5 dup(?) buffer db dup('$') .code mov ax, @data mov ds, ax again: call clear_buffer mov ah, lea dx, kytu1 int 21h mov ah, 0ah lea dx, hex int 21h lea si, hex+2 mov bh, [si-1] call hex2number lea si, buffer call number2string mov ah, lea dx, kytu2 int 21h mov ah, lea dx, buffer int 21h illegal: mov ah, lea dx, kytu3 int 21h mov ah, int 21h cmp al,'y' je again cmp al,'Y' je again mov ax, 4c00h int 21h clear_buffer proc lea si, buffer mov al, '$' mov cx, clearing: mov [si], al inc si loop clearing ret clear_buffer endp hex2number proc MOV AX, Ciclo: shl al, rcl ah, shl al, rcl ah, shl al, rcl ah, shl al, rcl ah, MOV BL, [ SI ] call validate CMP BL, 'A' JAE letterAF SUB BL, 48 JMP continue letterAF: SUB BL, 55 continue: OR AL, BL INC SI DEC BH JNZ Ciclo Fin: RET hex2number endp validate proc cmp bl, '0' jb error cmp bl, 'F' ja error cmp bl, '9' jbe ok cmp bl, 'A' jae ok error: pop ax pop ax mov ah, lea dx, kytu4 int 21h jmp illegal ok: ret validate endp number2string proc mov bx, 10 mov cx, cycle1: mov dx, div bx push dx inc cx cmp ax, jne cycle1 lea si, buffer cycle2: pop dx add dl, 48 mov [ si ], dl inc si loop cycle2 ret number2string endp ... dl,37h mov ah,2 int 21h dec cx cmp cx,0 jne hthi ret hienthi endp endp main Viết chương trình nhập vào số nguyên dương a, b,c cho a,b,c≤50 a Hãy tìm in số lớn b Hãy tìm in số số chẵn code mẫu 2: model... chuyenso: add dl,37h mov ah,2 int 21h dec cx cmp cx,0 jne hienthiso ret hienthi endp endp main Viết chương trình nhập vào số hexa tối đa chữ số, in hình giá trị thập phân tương ứng cua số vừa nhập

Ngày đăng: 17/10/2021, 15:10

Tài liệu cùng người dùng

Tài liệu liên quan