【例题】

在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。  

DATA SEGMENT

BUF1 DW-56,24,54,-1,89,-8……

BUF2 DW45,-23,124,345,-265,……

SUMDW10DUP(0)

DATA ENDS

分析:绝对值如何处理?

 

【分析】

负数在计算机中是以补码形式存储的。如何转成其绝对值呢?使用 neg指令 即可!

DATAS SEGMENT
   BUF1 DW -56,24,54,-1,89,-8,4,56,22,-1
BUF2 DW 45,-23,124,345,-265,-34,-56,-44,33,22
SUM DW 10 DUP(0)
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV ES,AX
    LEA SI,BUF1
    LEA DI,BUF2
    LEA BX,SUM
    MOV CX,10
 LP:MOV AX,[SI]
  CALL ABS
  MOV DX,AX
  MOV AX,[DI]
  CALL ABS
  ADD AX,DX
  MOV [BX],AX
  
  ADD SI,2
  ADD DI,2
  ADD BX,2
  LOOP LP
  MOV AH,4CH
  INT 21H
  
  ABS PROC NEAR
  OR AX,AX
  JNS OUT1
  NEG AX
  OUT1:RET
  ABS ENDP
  CODES ENDS
 END START

 

 

 

【附:一文一图】

汇编语言 | 复习月的一道练习题

 

相关文章:

  • 2021-12-06
  • 2021-05-30
  • 2021-12-04
  • 2021-04-09
  • 2021-08-29
  • 2021-12-04
猜你喜欢
  • 2021-05-26
  • 2021-12-10
  • 2021-12-03
  • 2021-10-06
  • 2022-01-10
  • 2021-05-05
  • 2022-12-23
相关资源
相似解决方案