当前位置:文档之家› 《汇编语言程序设计》实验指导书(2016)

《汇编语言程序设计》实验指导书(2016)


print2: add bh,30h
mov ax,data
div bl
mov dl,bh
mov ds,ax
mov bh,ah
mov ah,2
cmp al,0
int 21h
mov bx,0
je print
exit: mov ax,4c00h
mov si,0
add al,30h
int 21h
mov di,0
四、实验步骤:
1)打开汇编语言入口,进入命令提示符下; 2)键入 EDIT,编辑源程序; 3)键入 MASM XXX.ASM; 编译源程序; 4)键入 LINK XXX.OBJ; 连接目标程序; 5)键入 DEBUG XXX.EXE, 调试可执行文件。
附实验参考源程序 data segment adb '请输入一个小写字 母:$' bdb '你输错了,请重新 输入:$' data ends
jmp input second: mov dl,0dh
mov ah,2 int 21h mov dl,0ah int 21h mov dl,bl mov ah,2 int 21h inc dl int 21h mov dl,0dh mov ah,2 int 21h mov dl,0ah int 21h jmp input error: lea dx,b mov ah,9 int 21h mov dl,0dh mov ah,2 int 21h mov dl,0ah int 21h jmp input exit: mov ax,4c00h
实验三 伪指令
一、实验目的:
掌握 DB, DW, SEGMENT, ENDS, ASSUME 等宏汇编伪指令的功能,使用规则及使用场 合。
二、实验环境:
硬件:IBM PC 及其兼容机;软件:Windows 7、Debug 、Masm.exe、 Link.exe。
三、实验内容:
请把一个由 26 个大写字母和 26 个小写字母组成的 52 个字母的字符串从源缓冲区传送 到目的缓冲区。
mov ax,extra
b_buffer db 52 dup (?)
mov es,ax
lea si,a_buffer lea di,b_buffer cld mov cx,52 rep movsb
mov ax,4c00h int 21h code ends end start
实验四 顺序程序设计
一、实验目的:
四、实验步骤:
1)打开汇编语言入口,进入命令提示符下; 2)键入 EDIT,编辑源程序; 3)键入 MASM XXX.ASM; 编译源程序; 4)键入 LINK XXX.OBJ; 连接目标程序; 5)键入 DEBUG XXX.EXE, 调试可执行文件。 附实验参考源程序
data segment
extra ends
三、实验内容:
见教材 P35 实验一
四、实验步骤:
1)打开汇编语言入口,进入命令提示符下; 2)键入 DEBUG,进入 DEBUG; 3)逐条运行 DEBUG 的 A,R,D,E,U,T,P,G 命令,掌握这些命令的用法及其功能。
实验二 [BX]和 loop 的使用
一、实验目的:
熟练掌握[BX]和 LOOP 的使用。
shift1: lea dx,b mov ah,9 int 21h mov dl,0dh mov ah,2 int 21h mov dl,0ah int 21h jmp input2
exit: ret main endp code ends end start
2. 编写程序,将一个含有 20 个数据的数组 M 分成两个数组,正数组 P 和负数组 N, 并分别把两个数组中数据的个数显示出来。
《汇编语言程序设计》
实 验 指 导 书
淮南师范学院计算机学院
实验一 利用 DEBUG 查看 CPU 和内存
一、实验目的:
熟练使用 DEBUG 的 A,R,D,E,U,T,P,G 命令,掌握这些命令的用法及其功能。
二、实验环境:
硬件:IBM PC 及其兼容机;软件:Windows 7、Debug 、Masm.exe、 Link.exe。
p1: mov P[si],ax add si,2
int 21h lea dx,B mov ah,9 int 21h mov ax,n_cnt
data ends
inc word ptr
mov bl,10
P_CNT
div bl
code segment
mov bh,ah
main proc far
xiugai: add bx,2
cmp al,0
assume
loop compare
je print2
cs:code,ds:data
lea dx,A
add al,30h
start:
mov ah,9
mov dl,al
push ds
int 21h
mov ah,2
sub ax,ax
mov ax,p_cnt
int 21h
push ax
mov bl,10
cs:code,ds:data start:push ds sub ax,ax push ax mov ax,data mov ds,ax lea dx,A mov ah,9 int 21h
mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h
code segment assume cs:code,ds:data பைடு நூலகம்tart:
mov ax,data mov ds,ax input: lea dx,a mov ah,9 int 21h mov dl,0dh mov ah,2 int 21h mov dl,0ah int 21h
mov ah,1 int 21h mov bl,al cmp bl,0dh jz exit1 cmp bl,'a' jl error je first cmp bl,'z' je special1 jg error mov dl,0dh
int 21h
code ends end start
实验五 分支程序设计
一、实验目的:
掌握画分支程序流程图的方法。掌握使用分支指令如 JZ,JS,JMP 等指令设计分支 程序。
二、实验环境:
硬件:IBM PC 及其兼容机;软件:Windows 7、Debug 、Masm.exe、 Link.exe。
int 21h
mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h
jmp input1 shift: lea dx,b mov ah,9 int 21h mov dl,0dh mov ah,2 int 21h mov dl,0ah int 21h jmp input1
mov dl,'=' mov ah,2 int 21h
add bl,bh mov al,bl mov ah,0 mov bl,10 div bl mov bh,ah cmp al,0 je disp add al,30h mov dl,al mov ah,2 int 21h
disp: add bh,30h mov dl,bh mov ah,2
input1:mov ah,01 int 21h mov bl,al cmp bl,0Dh jz exit cmp bl,39h jnle shift sub bl,30h
mov dl,'+' mov ah,2 int 21h
input2:mov ah,01 int 21h mov bh,al cmp bh,0Dh jz exit cmp bh,39h jnle shift1 sub bh,30h
mov dl,0dh
Pdw 20 dup (?)
add di,2
mov ah,2
Ndw 20 dup (?)
inc word ptr
int 21h
P_CNT dw 0
N_CNT
mov dl,0ah
N_CNT dw 0 Adb '正数的个数 是:$' Bdb '负数的个数 是:$'
jmp near ptr xiugai
三、实验内容:
1. 编制一个在屏幕显示两个一位十进制数相加,并输出其和的汇编语言程序。
(参考源程序如下):
data segment A db '本程序是用
来做(0—9)加法运算$' B db '输入错误!请
重试:$' data ends
code segment main proc far assume
二、实验环境:
硬件:IBM PC 及其兼容机;软件:Windows 7、Debug 、Masm.exe、 Link.exe。
三、实验内容:
见教材 P121 实验四
四、实验步骤:
1)打开汇编语言入口,进入命令提示符下; 2)键入 EDIT,编辑源程序; 3)键入 MASM XXX.ASM; 编译源程序; 4)键入 LINK XXX.OBJ; 连接目标程序; 5)键入 DEBUG XXX.EXE, 调试可执行文件。
mov dl,al
code ends
mov cx,20
mov ah,2
end start
compare:
int 21h
四、实验步骤:
1)打开汇编语言入口,进入命令提示符下; 2)键入 EDIT,编辑源程序; 3)键入 MASM XXX.ASM; 编译源程序; 4)键入 LINK XXX.OBJ; 连接目标程序; 5)键入 DEBUG XXX.EXE, 调试可执行文件。
相关主题