汇编语言实验报告综合算术运算的练习(完整的汇编程序源程序)

一、实验目的

  1. 熟悉数据传送、算术运算指令和控制转移指令的用法。
  2. 掌握汇编语言源程序的顺序结构,默认十进制数D。
  3. 掌握汇编语言源程序的逻辑段结构。
  4. 熟悉汇编语言源程序的执行步骤及Debug调试的方法。

二、实验环境

Windows10 DOSBox-0.74  MASM5.0

三、实验内容

用三条指令来实现X+Y-Z,调试并查看执行结果,已知X=0002H,Y=0005H,Z=0005H。

1.分析问题,写出完整的汇编语言源程序。

2.保存此程序文件名为学号的后三位,用汇编语言源程序上机的五个步骤来调试。即用MASM汇编生成目标文件,用LINK进行连接生成可执行文件,并运行程序,接着进入在Debug下调试程序,用-R、-D、-U、-T、-G等命令来分析实验过程和结果。

四、实验步骤与过程分析(描述)

①用记事本编写程序,代码如下图。

用ax表示x、y、z,使用汇编指令mov,add,sub对ax进行具体的赋值进行加减运算。int 21H调用了系统中断,mov ax,4c00h的意思就是调用int 21H的4ch号中断,即安全退出程序。

②编写结束后保存成.asm文件,文件名命名成学号后三位即123.asm

 

③进入DOS后用masm编译生成.obj目标文件

④用link连接生成.exe可执行文件

⑤运行程序

 

⑥在debug下调试程序。

-r查看当前各个寄存器内容

-t执行汇编程序,单步跟踪。

指令-t=0 4是从cs:0开始连续执行4条指令,其中执行完第一条指令ax被赋值为0002H,执行完第二条指令ax变为0007H,执行完第三条指令ax变为0002H,即x+y-z=0002H+0005H-0005H=0002H。然后执行第四条指令mov ax,4c00H,即将ax赋值为4c00H。

-g是执行汇编指令,指一次性执行多条指令。

-g=0 c是从cs:0执行到cs:c,其执行结果与-t第四条命令相同。

-p表示结束本次程序,安全退出。

 

 

 

-d查看当前内存具体内容

如下图可以看到最左边是内存的起始地址,中间以十六进制的形式显示内存值,最右边是以ASCII码的形式显示内存值;每行最多显示16个字节的内容。

-u是对机器代码反汇编查看具体指令

-n 123lpm,即将文件名命名为1231pm,再用-w命令存盘。

 

五、实验总结

此次实验主要用汇编语言源程序上机的五个步骤来调试进行实验。即用MASM汇编生成目标文件,用LINK进行连接生成可执行文件,并运行程序,接着进入在Debug下调试程序,用-R、-D、-U、-T、-G、P、N、W等命令来分析实验过程和结果。此次实验需要注意和思考的几个问题如下:

在编写此程序时,定义数据时应注明进制,这里用16进制表示,比如0002H;因为汇编程序默认的数据是10进制。

G指令主要的作用也是执行汇编指令,不过和T指令不同的是,G指令不是逐条执行,而是一次性多条执行。G命令的使用方法是G [=起始地址] [断点地址],意思是从起始地址开始执行到断点地址。如果不设置断点,则程序一直运行到中止指令才停止。

在Debug下输入程序片段与在汇编语言源程序中是不同的,在Debug下输入程序的数据默认是16进制的,比如mov ax,0002中0002表示的的是0002H,而在汇编语言源程序中必须写为mov ax,0002H,因为汇编程序默认的数据是十进制。

对汇编语言源程序的结构框架分析为:编制汇编语言源程序时,首先要使用段定义伪指令和段寻址伪指令来构造一个由若干指令和数据组成的程序。构造一个源程序的框架结构有如下两种格式。

第一种格式:

ASSUME CS:CODESG

CODESG SEGMENT   ;定义一个段,段名为“CODESG”,这个段从此开始

.......

MOV AX,4C00H     ;返回DOS

INT 21H

CODESG ENDS      ;名为“CODESG”的段到此结束

END              ;标记整个程序的结束

第二种格式:

CODE SEGMENT

MAIN PROC FAR

  ASSUME CS:CODE,DS:DATAREA

START:

......

RET              ;取程序段前缀首地址

MAIN ENDP

CODE ENDS

END START        ;标记整个程序的结束

两种格式的区别:两种格式的本质区别在于返回DOS的方法不同。对于第一种格式,采用了调用DOS系统的4C00H功能,返回DOS。具体方法是:在要返回DOS处,安排如下两条指令:MOVAX,4C00H INT21H; 对于第二种格式,DOS返回方法是调用20H类型的中断服务程序。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验三 算术运算与代码转换程序设计 一、实验目的 1)掌握算术运算程序的设计方法。 2)掌握代码转换程序的设计方法。 3)进一步掌握各种程序结构。 4)熟练掌握和使用用DEBUG调试程序。 二、实验内容 1)编制两个多字节整数加法和减法程序,并将结果按十六 进制形式显示在屏幕上。 2)编制程序实现二进制定点数与十进制数的ASCII码串之 间转换,并将结果显示在屏幕上。 3)编写程序计算从键盘输入两个不超过四位的十进制数的 和、差、积、商,并以十进制形式输出。 4)写程序把从键盘输入的四位十六进制数转换为压缩的BCD码,并 显示输出。 5)编写一通用过程用来将十进制数(从键盘输入)转换为 P(从键盘输入)进制数。 三、实验设备 PC机一台 四、实验步骤 1) 按程序流程图编制实验程序。 2) 输入源程序。 3) 汇编、连接程序,执行程序,检查结果。 4) 程序的执行可用DEBUG的G命令,也可用T命令单步跟踪 执行。 5) 用D命令检查执行结果。 六、源程序 实验一 DATA SEGMENT NUM1 DB 22H,33H,44H,55H,66H,77H NUM1L DB 6H NUM2 DB 22H,22H,22H,22H NUM2L DB 4H OUTCOME1 DB 10H DUP(0) OUTCOME2 DB 10H DUP(0) N DB 0H DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA MOV DS,AX MOV CH,0 MOV SI,OFFSET NUM1 MOV DI,OFFSET NUM2 MOV AH,NUM1L MOV AL,NUM2L CMP AH,AL JAE CHA XCHG SI,DI XCHG AH,AL CHA:SUB AH,AL MOV CL,AL CLC MOV BX,OFFSET OUTCOME1 LOP1:MOV AL,[DI] PUSH CX MOV CL,[SI] ADC CL,AL MOV [BX],CL INC BX INC SI INC DI POP CX LOOP LOP1 MOV CL,AH JCXZ LOP3 LOP2:PUSH CX MOV CL, BYTE PTR [SI] ADC CL,0 MOV [BX],CL POP CX INC BX INC SI LOOP LOP2 LOP3:MOV CH,0 MOV SI,OFFSET NUM1 MOV DI,OFFSET NUM2 MOV AH,NUM1L MOV AL,NUM2L CMP AH,AL JAE CHA1 XCHG SI,DI XCHG AH,AL CHA1:SUB AH,AL MOV CL,AL CLC MOV BX,OFFSET OUTCOME2 LOP11:MOV AL,[DI] PUSH CX MOV CL,[SI] SBB CL,AL MOV [BX],CL INC BX INC SI INC DI POP CX LOOP LOP11 MOV CL,AH JCXZ LOP7 LOP21:PUSH CX MOV CL, BYTE PTR [SI] SBB CL,0 MOV [BX],CL POP CX INC BX INC SI LOOP LOP21 LOP7:MOV DI,OFFSET OUTCOME1 ADD DI,10H MOV CX,11H LOP4: MOV DL,[DI] DEC DI CMP N,0H JNE LOP5 CMP DL,0H JE LOP9 LOP5:PUSH DX PUSH CX MOV CL,4H SHR DL,CL POP CX CMP DL,9H JBE LOP6 ADD DL,7H LOP6:ADD DL,30H MOV AH,2 INT 21H MOV N,1H POP DX AND DX,0FH CMP DL,9H JBE LOP8 ADD DL,7H LOP8:ADD DL,30H MOV AH,2 INT 21H MOV DL,'H' MOV AH,2 INT 21H LOP9:LOOP LOP4 MOV N,0 MOV DI,OFFSET OUTCOME2 ADD DI,10H MOV CX,11H LOP14: MOV DL,[DI] DEC DI CMP N,0H JNE LOP15 CMP DL,0H JE LOP19 LOP15:PUSH DX PUSH CX MOV CL,4H SHR DL,CL POP CX CMP DL,9H JB

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值