该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
实验1
1:在河大FTP上下载。
PUB文件夹中的编程开发文件夹中找到MASM6。0其中包括masm.exe和link.exe
2:masm.exe将后缀名为:asm的文件生成为obj
link.exe将.obj编译成.exe的文件
3:先将原文件.asm用masm.exe在dos中生成.obj文件再用link.exe连接成.exe文件
4:在dos中选择.exe文件.根据提示选择生成可执行性文件(.exe)后在dos下输入文件所在目录然后输入文件名.按回车出现播放音乐列表.按shift+字母选中播放音乐.按shift+Q退出.
实验2
1:宏指令与子程序的异同
宏指令和子程序都可以被多次调用。
子程序汇编成目标代码的过程只进行一次。用到宏指令的地方。都要对宏指令进行汇编
子程序无参数,调用其那应事先设置好寄存器等,宏指令可以使用带参数调用。
区别于高级语言。高级语言的子程序可以带参数。
2。START 伪指令指示程序的开始
3。 程序中定义3数据段 。代码段。堆栈段三个段。
程序中用DATA定义数据段,用CODE指定代码
用STACK指定堆栈段。
4。
DSEG SEGMENT;数据段:在此处添加程序所需的数据
DSEG ENDS
CSEG SEGMENT
assume cs:CSEG,ds:DSEG,es:ESEG,ss:ssEG
MAIN PROC FAR:主程序入口
mov ax,dseg
mov ds,ax
mov ax,eseg
mov es,ax
此处添加主程序代码
按任意键退出
mov ah,1
int 21h
mov ax,4c00h;程序结束,返回到操作系统
int 21h
MAIN ENDP
CSEG ENDS
END MAIN
实验三
1:用伪指令定义DB,DW
格式:【变量名】定义数据伪指令
例:DB 100;A为一个字节,值为100
DW 23;H为一个字,存放顺序为06. 00H
2:
SHOW MACRO b
LEA DX ,b
MOV AH 9
INT 21
ENDM
DATA ENDS
STACK SEGMENT
DB 200 DUP ('STACK')
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
show INFO1
show INFO2
MOV AF 4CH
INT 21H
CODE ENDS
END START
3:
DATAS SEGMENT
INF01 DB ODH;OAH 'YES'
INF02 DB ODH;OAH 'NO'
data ends
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
mov AH 01H
INT 21H
CMP AL,'A'
IN2 SHOWNO
LEA DX,INF01
JMP RETORN
SHOW NO:
LEA DX,INF02
R ETURN
MOV AH,9 INT 21H
MOV AH,HCH
INT 21H
CODES ENDS
STERT ENDS
4:4CH功能在于让你退出程序,调用程序 由上面AH决定,退出程序时使用;
实验三
1:用伪指令定义DB,DW
格式:【变量名】定义数据伪指令
例:DB 100;A为一个字节,值为100
DW 23;H为一个字,存放顺序为06. 00H
2:
SHOW MACRO b
LEA DX ,b
MOV AH 9
INT 21
ENDM
DATA ENDS
STACK SEGMENT
DB 200 DUP ('STACK')
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
show INFO1
show INFO2
MOV AF 4CH
INT 21H
CODE ENDS
END START
3:
DATAS SEGMENT
INF01 DB ODH;OAH 'YES'
INF02 DB ODH;OAH 'NO'
data ends
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
mov AH 01H
INT 21H
CMP AL,'A'
IN2 SHOWNO
LEA DX,INF01
JMP RETORN
SHOW NO:
LEA DX,INF02
R ETURN
MOV AH,9 INT 21H
MOV AH,HCH
INT 21H
CODES ENDS
STERT ENDS
4:4CH功能在于让你退出程序,调用程序 由上面AH决定,退出程序时使用;
题目
(1)编写名为int_func的中断程序,仅需写出必要的代码框架。
(2)如果要通过指令“int 50h”来调用int_func,应该如何填写中断向量表,写出必要的代码片段。
(3)若要通过8259的3号中断引脚来触发int_func,应选择哪个向量号?写出填写向量表以及设置8259的必要代码片段
实验5
1.中断程序名 proc
...
功能代码
...
iret
中断程序名 endp
2.cli
push ds
mov ax;0000h
mov ds,ax
mov si soh*4
mov word ptr[si],offset intfunc
mov word ptr[sit2],seg intfunc
pop ds
sti
3.(1)OBH
(2)Cli
pash ds
mov ds,ax
mov si,OBH*4
mov word ptr[si],offset int-funce
mov word ptr[si+2],seg int-funce
pop ds
sti
置3号引脚工作状态
in al,2h
and al,111,10111b
out 21H,al
清除8259中断服务位
mov al,01100011B
mov 20h,al