读书人

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

发布时间: 2012-03-28 15:40:03 作者: rapoo

汇编程序有问题求指导
题目是: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:MOVAX,DSEG
MOV DS,AX
MOV AL,[NUM+2]
IMUL [NUM+3]
MOVBL,AL
MOVAL,[NUM]
ADDAL,[NUM+1]
SUBAL,BL
CBW
IDIV[NUM+4]
MOVBL,AL
MOVCL,0AH
SHRAL,4
xorah,ah
DIVCL
ADDAH,30H
MOVDL,AH
MOVAH,2
INT21H
MOVAL,BL
SHLAL,4
SHRAL,4
xorah,ah
DIVCL
ADDAH,30H
MOVDL,AH
MOVAH,2
INT21H
MOVAH,4CH
INT21H
CSEGENDS
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……

读书人网 >汇编语言

热点推荐