新手求助一道分段函数题目

Quentinn 2009-04-13 11:05:27
微计算机原理第2版
3-27试编写一个程序段,能完成下列数学表达式的功能。
-1 (X≤-1)
Y= 0 (-1<X<1)
1 (X≥1)

我编的代码只能直接定义一个数,比如 DATA DB -5 去比较,然后得到相应Y值
我想从键盘接受一个数,然后去比较,但是我目前只知道MOV AH,1 INT 21H 接受输入一个字符的...
还知道一个MOV DX,OFFSET BUF MOV AH,0AH INT 21H 这个就不太清楚了,听说要将BUF中的ASSCII码转换为其对应的数值,再放入AL中,这个具体怎么实现?
还有问题是汇编怎么接受小数和带符号数,比如接受一个0.5或者-10去比较,目前编写的代码:
DATAS SEGMENT
;此处输入数据段代码
Y1 db 'y=-1','$'
Y2 DB 'Y=0','$'
Y3 DB 'Y=1','$'
MESG DB 'Please input a number to set the value of X:',0ah,0dh,'$'
BUF DB 81
DB ?
DB 81 DUP(?)
DATA DB -5
DATAS ENDS

STACKS SEGMENT ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
/*MOV DX,OFFSET MESG
MOV AH,09
INT 21H
MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H
MOV DX,OFFSET BUF+2
MOV AH,09H
INT 21H */不会,乱写的
MOV AL,DATA ;目前只会直接定义一个值
CMP AL,-1
JNG YY1
CMP AL,1
JL YY2
JMP YY3
YY1:
LEA DX,Y1
MOV AH,09
INT 21H
JMP OVER
YY2:
LEA DX,Y2
MOV AH,09H
INT 21H
JMP OVER
YY3:
lea dx,Y3
MOV AH,09H
INT 21H
OVER:
MOV AH,4CH
INT 21H
CODES ENDS
END START

请高手们帮忙
...全文
256 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
feizigegeyeye 2011-05-08
  • 打赏
  • 举报
回复
你这个判断的时候逻辑是错误的 没有这种跳转的用法

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧