汇编语言程序设计 第十章 算术运算与代码转换

多字节加减

DSEG SEGMENT
DATA1 DB 85H,27H,4AH
DATA2 DB 93H,87H,65H
LEGH DB 3
SUM DB 0,0,0
DSEG ENDS
SSEG SEGMENT PARA STACK
STACK DB 50 DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
ASSUME SS:SSEG
MADD: MOV AX,DSEG
MOV DS,AX
MOV AX,SSEG
MOV SS,AX
MOV SP,LENGTH STACK
MOV SI,OFFSET DATA1
MOV BX,OFFSET DATA2
MOV DI,OFFSET SUM
MOV CL,LEGH
CLC

AGAIN: MOV AL,[SI]
ADC AL,[BX]
MOV [DI],AL
INC SI
INC BX
INC DI
DEC CL
JNZ AGAIN
MOV AH,4CH
INT 21H
CSEG ENDS
END START

减法类似

MSUB PROC NEAR
PUSH SI
PUSH AX
PUSH DI
CLC
MSUB1:MOV AL,[DI]
SBB [SI],AL
INC SI
INC DI
DEC AH
JNZ MUSB1
POP DI
POP AX
POP SI
RET
MSUB ENDP

多字节比较

MCMP PROC NEAR
PUSH SI
PUSH AX
PUSH DI
MCMP1:MOV AL,[SI]
CMP AL,[DI]
JNZ MCMPR
DEC SI
DEC DI
DEC AH
JNZ MCMP1
MCMPR:POP DI
POP AX
POP SI
RET
MCMP ENDP

多字节移位

MSHL PROC NEAR
PUSH SI
PUSH CX
CLC
MSHL1: RCL BYTE PTR[SI],1
INC SI
DEC CH
JNZ MSHL1
POP CX
POP SI
RET
MSHL ENDP
posted @ 2025-05-05 21:09  Guaninf  阅读(13)  评论(0)    收藏  举报