实验三 算术运算指令
1、程序说明:编写三个完整的汇编语言源程序,完成以下计算。其中X、Y、Z、R、W均为存放16位带符号数单元的地址。 (1)Z←W+(Z-X)
(2)Z←W-(X+6)-(R+9) (3)Z←(W*X)/(Y+6),R←余数
2、调试说明:当编译完成后,计算机未能生成.OBJ的文件,经检查错误发生在ADD使用上,我把两个寄存器操作数同时用在ADD语句里,结果出错了。把ADD语句稍作写该后,程序运行正确。 3、写出源程序清单和执行结果
本实验我们只做前两个,即:(1)Z←W+(Z-X);(2)Z←W-(X+6)-(R+9)
源程序:
(1) Z←W+(Z-X)
DATA SEGMENT X DD 0001H Z DD 0003H W DD 0005H DATA ENDS CODE SEGMENT
ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,X MOV BX,Z SUB BX,AX MOV AX,W ADD BX,AX MOV Z,BX MOV AH,4CH INT 21H CODE ENDS
END START
用debug调试结果:
源程序:
(2)Z←W-(X+6)-(R+9)
DATA SEGMENT X DW 0006H R DW 003AH W DW 0110H Z DW ? DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,X ADD AX,6 MOV BX,R ADD BX,9 MOV CX,W SBB CX,AX SBB CX,BX MOV Z,CX
MOV AH,4CH INT 21H CODE ENDS
END START
用debug调试结果:
实验四 查表程序设计
1、程序说明:用查表的方法将一位十六进制数转换成与它相应的ASCII码,并将结果存放到ASCI单元中。
2、调试说明:开始生成.OBJ文件时,调试不成功,以为是程序编译有误,后经再三检查都未发现错误,这时只好从头做检查,结果发现了错误:从本实验有的提示语段中拷贝过来的语句书写有误,即符号的书写为中文书写,以至于整个程序未能通过编译。把中文书写修改为英文书写后,编译成功。 3、源程序清单和执行结果:
源程序:
DATA SEGMENT
TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H DB 38H,39H,41H,42H,43H,44H,45H,46H
HEX DB 08H ASCI DB ? DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX
MOV BX,OFFSET TABLE
MOV AL,HEX ;查找对象的下标存在AL中 XLAT
MOV ASCI,AL MOV AH,4CH INT 21H CODE ENDS END START
用debug调试结果: