设计几个简单的汇编函数

原创


已知符号函数 Y= 1 (当X>0), 0 (当X=0),-1 (当X<0)

设任意给定的X(-128≤X≤127)存放在DTX单元,计算函数Y值,要求存放在DTY单元中。

采用分支结构。首先判断X≥0还是X<0,如果X<0,则Y=-1;如果X≥0,则在判断X=0还是X>0,从而确定数值Y。

首先判断X≥0还是X<0,如果X<0,则Y=-1;如果X≥0,则在判断X=0还是X>0,从而确定数值Y。
DATA SEGMENT
    DTX DB ?
    DTY DB ?
DATA ENDS
CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX
    MOV AL,DTX
    CMP AL,0
    JGE BGE        ;大于等于跳转
    MOV AL 0FFH
    JMP EQ1
BGE: 
    JZ EQ1    ;X==0跳转
    MOV AL,1
EQ1:
    MOV DTY AL
    MOV AH,4CH
    INT 21H
CODE ENDS
END START
自BLOCK开始的内存缓存区中,有100个8位无符号数,求出其中最大值,存入MAX单元。
MOV BX,OFFSET BLOCK
MOV AX,[BX]    ;取第一个数
MOV CX,99    ;比较99次
INC BX    ;指向第二个数
    LOOP:
    CMP AX,[BX]
    JMP SS
    MOV AX,[BX]
    SS:
    INC BX
    DEC CX
    JNZ LOOP
    MOV MAX,AX
    HLT

另附:

XOR

XOR AL,AL 时,该指令对指定的两个操作数按位进行逻辑“异或”运算,进行“异或”运算的两位不相同时,“异或”的结果为1,否则为0。

所以会影响到状态位,比如状态位CF,因为一定不会有进位,所以CF=0

16:39:42

2018-12-01

posted @ 2018-12-01 16:40  一转身已万水千山  阅读(527)  评论(0编辑  收藏  举报