实验三

实验内容

任务一:编写t1.asm,进行汇编,链接,运行。

(1)首先进行编译,编译成功后会生成 obj 文件,之后再链接,成功后生成可执行文件

(2)运行可执行文件:

结果输出了36;

(3)将t1程序中第四行的数字3和第九行的数字6分别改为5,7,再重新编译链接运行:

结果这样是输出了5和7;

(4)用debug进行调试,r命令显示个寄存器的值

cx=0016H,而DS和CS之间的确满足了CS=DS+10H;

(5)查看程序段前缀PSP的前两个字节是CD 20:

(6)使用 u 命令对 t1.exe 进行反汇编,再用t命令和p命令(遇到 int 命令时,用 p 命令)单步执行:


 

任务二

(1)编写 t2.asm ,进行汇编链接运行调试:

(2)清除屏幕后执行t2:

屏幕上打印了红色数字36;

(3)修改0433h为0432h以及0436h为0439h之后,再重新编译链接运行:

屏幕上打印了红色数字29;

 (4)修改0433h为0333h以及0436h为0336h之后,再重新编译链接运行:

屏幕上打印了蓝色数字36;


 

延伸思考

(1)任务 2 和实验 1中的「实验任务(4)」都在屏幕上进行了打印输出,是因为它们都是向显存中写入了数据(A0000~BFFFF);

(2)任务1也同样在屏幕上显示输出,是通过给AH寄存器赋值,然后调用INT 21H指令,计算机就会根据AH寄存器中的值执行相应的操作。

 

总结与体会

初步了解了int 21H作为中断程序的功能,这个汇编指令是用于提供DOS系统功能调用。例如:

mov ah,4ch

int 21h

通过4CH功能调用能够结束当前正在执行的程序,返回DOS系统。

再例如:
mov ah,01
int 21h
功能为键盘输入,并且显示输出。

转载于:https://www.cnblogs.com/czh805168697/p/9975429.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值