13.编写程序段,将 AX 寄存器中的内容以相反的顺序传送到 DX 寄存器中,并要
求 AX 中的内容不被破坏,然后统计 DX 寄存器中“1”的个数并存入 BL 中。
CODE SEGMENT
ASSUME CS:CODE
START:PUSH AX
MOV BL,0
MOV DX,0
MOV CX,16
AGAIN:SHL AX,1
JNC NEXT
INC BL
NEXT:RCR DX,1
LOOP AGAIN
POP AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
14.将内存中以 BUF 为首地址的 100 个字节单元中为原码表示的有符号数,依次
变成用补码表示的有符号数,仍然依次放在原 100 个字节单元中,请编写完整程
序。
DATA SEGMENT
BUF DB 100 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA BX,BUF
MOV CX,100
NEXT:TEST BYTE PTR [BX],80H ;测试最高位,来判断正负
JZ ZS ;如果是正数,则保持不变
AND BYTE PTR [BX],7FH ;如果是负数,最高位置零
NEG BYTE PTR [BX] ;如果是负数,然后在取补
ZS:INC BX
LOOP NEXT
MOV AH,4CH
INT 21H
CODE ENDS
END START