资源描述:
《河北工业大学汇编语言程序设计实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、河北工业大学汇编语言实验设计汇编语言程序设计实验实验一顺序与分支程序设计一、实验目的1)掌握顺序程序设计方法。2)掌握分支程序的结构及分支程序的设计,调试方法。3)学习数据传送及算术和逻辑运算指令的用法。4)熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。二、实验内容1)有一字变量BUF1是以原码表示的有符号数,要求将其转换为反码和补码,分别存入BUF2和BUF3单元,并在屏幕上显示出来。DATA SEGMENT;数据段BUF1 DW 7898HBUF2 DW 4 DUP(0),0AH,0DH,'$'BUF3 DW 4 DUP(0),'$'DATA ENDS;数据段
2、结束CODE SEGMENT;代码段 ASSUME CS:CODE,DS:DATA;段寄存器关联说明伪指令BEGIN: MOV AX,DATA MOV DS,AX河北工业大学汇编语言实验设计;将数据段的基地址装入数据段寄存器DS MOV AX,BUF1;将字型变量BUF1的值装入AX寄存器 ADD AX,0;AX寄存器里的数据加0,以便进行转移测试 JS NEXT;判断(AX)的正负,若为负则转到NEXT,为正则往下顺序执行。 MOV BUF2,AX;为正,反码与原码一样 MOV BUF3,AX;为正,补码与原码一样
3、 JMP EEENEXT:AND AX,7FFFH;将符号位变为0 NOT AX;求反码 MOV BUF2,AX;将BUF1的反码装入BUF2 INC AX;求补码 MOV BUF3,AX;将补码装入BUF3EEE:MOV CX,0004H;将0004H装入CX计数器寄存器中 MOV DI,OFFSET BUF2;将DI指向变量BUF2开始的存储单元 MOV DX, [DI];将DI所指的数据装入DX寄存器中 ADD DI,03;将DI指针下移三个字BBB:MOV AX,DX;将DX中的内容装
4、入AX寄存器中 AND AX,000FH;即使BUF2的低四位不变,其余均变为0 CMP AL,0AH;比较[AL]与0AH的大小,以便能正确转换为0-9的ASCII值 JB QQQ;若[AL]<0AH,则转到QQQ,否则,顺序执行 ADD AL,07H;因为[AL]>0AH,所以[AL]+07H,使得AL能转换成相应数字的ASCII值QQQ:ADD AL,30H;将[AL]转换成相应数字的ASCII值 MOV [DI],AL;将AL中的内容装入以DS中的内容为段基地址,以DI的内容为偏移地址的存储单元中 DEC DI;DI=DI-1,即
5、将DI指向前一个存储单元 PUSH CX;保存CX寄存器的内容 MOV CL,04H;给CL寄存器赋值为04H SHR DX,CL;将[DX]逻辑右移四位河北工业大学汇编语言实验设计 POP CX;恢复CX寄存器的内容 LOOP BBB;循环判断语句,CX=CX-1,若CX不等于0,则转到BBB,将下一个低四位存入存储单元中,否则循环结束 MOV CX,0004H;给CX寄存器赋值为0004H MOV SI,OFFSET BUF3;将SI指向变量BUF3开始的存储单元 MOV DX,[SI];将SI所指的数据装入DX寄存器中 ADD S
6、I,03H;将DI指针下移三个字CCC:MOV AX,DX;将DX中的内容装入AX寄存器中 AND AX,000FH;即使BUF3的低四位不变,其余均变为0 CMP AL,0AH;比较[AL]与0AH的大小,以便能正确转换为0-9的ASCII值 JB DDD;若[AL]<0AH,则转到DDD,否则,顺序执行 ADD AL,07H;因为[AL]>0AH,所以[AL]+07H,使得AL能转换成相应数字的ASCII值DDD:ADD AL, 30H;将[AL]转换成相应数字的ASCII值 MOV [SI],AL;将AL中的内容装入以DS中的内容为段基地址,以SI的内容为偏移地
7、址的存储单元中 DEC SI;SI=SI-1,即将SI指向前一个存储单元 PUSH CX;保存CX寄存器的内容 MOV CL, 04H;给CL寄存器赋值为04H SHR DX, CL;将[DX]逻辑右移四位 POP CX;恢复CX寄存器的内容 LOOP CCC;循环判断语句,CX=CX-1,若CX不等于0,则转到CCC,将下一个低四位存入存储单元中,否则循环结束 MOV DX, OFFSET