帮忙看下什么问题好么?
时间:2011-10-27
来源:互联网
小弟正在写一段汇编程序
编写计算Y=X^2+6*X+9的程序。
代码如下:
Assembly code
结果,在MASM 5.0编译出错误:
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
Object filename [cc33.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
cc33.asm(9): error A2056: Immediate mode illegal
cc33.asm(20): warning A4031: Operand types must match
cc33.asm(29): warning A4031: Operand types must match
cc33.asm(31): warning A4031: Operand types must match
50734 + 450386 Bytes symbol space free
3 Warning Errors
1 Severe Errors
求解释啊,求解释
编写计算Y=X^2+6*X+9的程序。
代码如下:
Assembly code
DATA SEGMENT X DB 04H Y DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: PUSH DATA XOR AX,AX XOR CX,CX PUSH AX MOV AX,DATA MOV DS,AX MOV AL,X MOV CL,X MUL CL MOV BX,AX ;实现X*X,结果存入BX MOV AX,X MOV CL,1 SHL AX,CL MOV DX,AX SHL AX,CL ADD DX,AX ;实现6*X,结果存入DX MOV AX,BX ADD AX,DX ADD AX,9 MOV Y,AX MOV AX,Y MOV DL,AL AND DL,0F0H MOV CL,04H SHR DL,CL ADD DL,30H MOV AH,02H INT 21H MOV DL,Y ADD DL,0FH ADD DL,30H ADD AH,02H INT 21H CODE ENDS END START
结果,在MASM 5.0编译出错误:
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
Object filename [cc33.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
cc33.asm(9): error A2056: Immediate mode illegal
cc33.asm(20): warning A4031: Operand types must match
cc33.asm(29): warning A4031: Operand types must match
cc33.asm(31): warning A4031: Operand types must match
50734 + 450386 Bytes symbol space free
3 Warning Errors
1 Severe Errors
求解释啊,求解释
作者: cc199026 发布时间: 2011-10-27
cc33.asm(9): error A2056: Immediate mode illegal 不该用立即数的你用了
cc33.asm(20): warning A4031: Operand types must match 类型不匹配
cc33.asm(29): warning A4031: Operand types must match
cc33.asm(31): warning A4031: Operand types must match
Assembly code
cc33.asm(20): warning A4031: Operand types must match 类型不匹配
cc33.asm(29): warning A4031: Operand types must match
cc33.asm(31): warning A4031: Operand types must match
Assembly code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; 编写计算Y=X^2+6*X+9的程序。 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DATA SEGMENT X DB 04H Y DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: ;把你那两个PUSH删掉了 MOV AX,DATA MOV DS,AX MOV AL,X MOV CL,X MUL CL MOV BL,AL ;实现X*X,结果存入BX MOV AL,X MOV CL,1 SHL AL,CL MOV DL,AL SHL AL,CL ADD DL,AL ;实现6*X,结果存入DX MOV AL,BL ADD AL,DL ADD AL,9 MOV Y,AL MOV DL,Y AND DL,0F0H MOV CL,04H SHR DL,CL ADD DL,30H MOV AH,02H INT 21H MOV DL,Y AND DL,0FH ADD DL,30H MOV AH,02H INT 21H ;没转化成10进制输出了 MOV DL,'H' ;我加的 MOV AH,2 INT 21H MOV AH,7 ;我加的 INT 21H MOV AX,4C00H INT 21H CODE ENDS END START
作者: DiamondCG 发布时间: 2011-10-27
Assembly code
这一段求解释,尤其是那个MOV AH,7
实在看不明白
MOV AH,7 ;我加的 INT 21H MOV AX,4C00H INT 21H CODE ENDS END START
这一段求解释,尤其是那个MOV AH,7
实在看不明白
作者: cc199026 发布时间: 2011-10-27
引用 2 楼 cc199026 的回复:
Assembly code
MOV AH,7 ;我加的
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END START
这一段求解释,尤其是那个MOV AH,7
实在看不明白
Assembly code
MOV AH,7 ;我加的
INT 21H
MOV AX,4C00H
INT 21H
CODE ENDS
END START
这一段求解释,尤其是那个MOV AH,7
实在看不明白
MOV AH,7 ;21号中断7号子功能:输入不回显,这里起程序中断作用,防止你一运行该程序,还没看到结果一闪就没了.
INT 21H
MOV AX,4C00H ;21号中断4c号子功能:返回系统
INT 21H
作者: DiamondCG 发布时间: 2011-10-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28