当前位置: 代码迷 >> 汇编语言 >> 汇编程序有有关问题求指导
  详细解决方案

汇编程序有有关问题求指导

热度:4811   发布时间:2013-02-26 00:00:00.0
汇编程序有问题求指导
题目是:NUM变量中定义了5个有符号数 U=09H,V=16H,W=02H,X=03H,Y=05H 计算(U+V-W*X)/Y并将结果显示在屏幕上
我的程序如下:
DSEG SEGMENT
NUM DB 09H,16H,04H,17H,05H
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
MOV AL,[NUM+2]
IMUL [NUM+3]
MOV BL,AL
MOV AL,[NUM]
ADD AL,[NUM+1]
SUB AL,BL
CBW
IDIV [NUM+4]
MOV BL,AL
MOV CL,0AH
SHR AL,4
xor ah,ah
DIV CL
ADD AH,30H
MOV DL,AH
MOV AH,2
INT 21H
MOV AL,BL
SHL AL,4
SHR AL,4
xor ah,ah
DIV CL
ADD AH,30H
MOV DL,AH
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END START
用masm运行 19 28 29行显示错误improper operand type
求指导啊,还有无符号数使用xor ah,ah扩展为数吗?
先谢谢了

------解决方案--------------------------------------------------------
SHL AL, 4 这样的指令,是需要 386 或以上的 cpu 才支持的,汇编程序缺省的是 8086 级的指令集。
所以,要么将 cl 置 4 然后用 SHL AL, CL 这样的指令;要么在程序的开始处加上下面的两个语句:
Assembly code
.model  small  ; 注意,这两语句的顺序不能反了。必须使用 Masm6 或更高版本的汇编软件.386
------解决方案--------------------------------------------------------
探讨
题目是:NUM变量中定义了5个有符号数 U=09H,V=16H,W=02H,X=03H,Y=05H 计算(U+V-W*X)/Y并将结果显示在屏幕上
我的程序如下:
DSEG SEGMENT
NUM DB 09H,16H,04H,17H,05H
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV D……