博主是个大笨比,只会阿巴阿巴阿巴
题目
设变量var字单元的值为带符号数x,x和y为字单元的变量,编写程序,按照下列要求给y赋值
指令 | 意义 |
---|---|
JS | 做差小于0 |
JNS | 做差大于0 |
JLE 或者 JNG | 做差结果小于等于 或者 不大于 |
思路:两个数做差,之后判断值的正负 来 赋相应的值
DATAS SEGMENT
var dw 0
y dw 0
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;这里接dx寄存器来查看变量y的值
;==============================================================================
MOV var,-1 ;给var变量赋值
MOV ax,var ;将var的值传递给ax
SUB ax,30 ;将x与30做差 比较大小
JLE L2 ;如果ax-30 <=0 将跳转至L2
JNS L1 ;如果ax-30 >0 将跳转至L1
L2:
MOV ax,var ;重新给x赋值
SUB ax,1 ;将ax与1做差 比较大小
JS L3 ;如果 ax - 1 <0 将跳转至L3
JNS L4 ;如果 ax - 1 >0 将跳转至L4
L3:
MOV y,-2 ;ax<1
MOV dx,y
JMP Stop ;无条件 跳转
L4:
MOV y,0 ;ax<=30 且 ax>1
MOV dx,y
JMP Stop ;无条件 跳转
L1:
MOV y,2 ;ax>30 将2赋值给y
MOV dx,y
Stop:
MOV AH,4CH
INT 21H
;==============================================================================
CODES ENDS
END START
tip:
如果有疑问,请联系 博主 博主也是一个 菜比 刚学,
如果有更好的方法,请多指教