请写一个程序片段统计寄存器AX中置1位的个数
本帖最后由 兰陵月 于 2016-12-15 15:33 编辑;程序名:TT321.ASM
;功能:统计寄存器AX中置1位的个数。
;备注:第3章题目T3.21:请写一个程序片段统计寄存器AX中置1位的个数
ASSUME CS:CSEG,DS:DSEG
;数据段
DSEG SEGMENT
NUMBER DB 0
DSEG ENDS
;代码段
CSEG SEGMENT
START: MOV DX,DSEG
MOV DS,DX
MOV AX,8191;假设的AX数值
MOV CX,16
NEXT: SHR AX,1
JNC TJ
ADD NUMBER,1
TJ: LOOP NEXT
MOV AX,4C00H
INT 21H
CSEG ENDS
END START
请问这个答案是否有错误,或者可以做更多优化。和大家交流~谢谢~
我已经经过调试,结果没有~ @jun @康小泡 @~风介~ @人造人 @西电图图 @不二如是 {:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:} 兰陵月 发表于 2016-12-15 13:02
@jun @康小泡 @~风介~ @人造人 @西电图图 @不二如是 {:10_266: ...
你使用的编译器是?
本帖最后由 兰陵月 于 2016-12-15 15:34 编辑
人造人 发表于 2016-12-15 13:30
你使用的编译器是?
{:10_262:}{:10_262:}
那个是调试时遗留的问题,忽略他吧
我修正了一楼的内容~~{:10_262:} 兰陵月 发表于 2016-12-15 15:32
那个是调试时遗留的问题,忽略他吧
我修正了一楼的内容~~
;程序名:TT321.ASM
;功能:统计寄存器AX中置1位的个数。
;备注:第3章题目T3.21:请写一个程序片段统计寄存器AX中置1位的个数
ASSUME CS:CSEG, DS:DSEG
;数据段
DSEG SEGMENT
NUMBER DB 0
DSEG ENDS
;代码段
CSEG SEGMENT
START:
MOV DX, DSEG
MOV DS, DX
MOV AX, 8191 ;假设的AX数值
MOV CX, 16
NEXT:
test ax, 1
jz ok
inc NUMBER
ok:
SHR AX, 1
LOOP NEXT
MOV AX, 4C00H
INT 21H
CSEG ENDS
END START
人造人 发表于 2016-12-15 17:55
你这个答案确实好多了~
页:
[1]