Collector
جمعه 03 خرداد 1392, 19:41 عصر
سلام
در این برنامه میخوام تعداد یک های از یک ثبات تا یک ثبات دیگر(مثلا از si تا di) را حساب کنم ولی فقط میتونم یک ثبات را این کار بکنم
با حلقه هم هر کاری کردم نشد
سوال:
برنامه ای به زبان اسمبلی بنویسید که تعداد بیت های دارای ارزش یک در حافظه از آدرس esi تا آدرس edi را شمرده
و در ثبات eax قرار دهد
PAGE 110,100
TITLE 'rol_exam.asm' a rotate example
;-----------------------------------------------
; Defining Segment of Program
; ----------------------------
CODESG SEGMENT PARA 'CODE'
ASSUME SS:CODESG,DS:CODESG,CS:CODESG
ORG 100H
START: JMP MAIN ;1-Jump to instuctions
;-----------------------------------------------
PEYGHAM DB 0AH,0DH, 'number of 1 is:','$'
;-----------------------------------------------
MAIN PROC NEAR
MOV Bx,0 ;2-BL=0
MOV Cx,16 ;3-Number of rotate
MOV Ax,0010100011100100B ;4-Initial AL
AGAIN: ROL Ax,1 ;5-Rotate left 1 time AL
JNC NEXT ;6-If not carry go NEXT
INC Bx ;7-Else increment BL
NEXT:LOOP AGAIN ;8-Loop to AGAIN 8 times
MOV AH,09H ;9-Service 9H to display
LEA DX,PEYGHAM ;10-DX=PEYGHAM
INT 21H ;11-Active interrupt 21H
;
MOV AH,02H ;12-Service 2H to display
MOV Dx,bx ;13-ASCII code IN DL
ADD Dx,30H ;14-Change DL to ASCII
INT 21H ;15-Active interrupt 21H
; Come back to operating system
; -----------------------------
MOV AX,4C00H ;16- End of
INT 21H ;17- processing
MAIN ENDP ; End of procedure
CODESG ENDS ; End of segment
END START ; End of program
در این برنامه میخوام تعداد یک های از یک ثبات تا یک ثبات دیگر(مثلا از si تا di) را حساب کنم ولی فقط میتونم یک ثبات را این کار بکنم
با حلقه هم هر کاری کردم نشد
سوال:
برنامه ای به زبان اسمبلی بنویسید که تعداد بیت های دارای ارزش یک در حافظه از آدرس esi تا آدرس edi را شمرده
و در ثبات eax قرار دهد
PAGE 110,100
TITLE 'rol_exam.asm' a rotate example
;-----------------------------------------------
; Defining Segment of Program
; ----------------------------
CODESG SEGMENT PARA 'CODE'
ASSUME SS:CODESG,DS:CODESG,CS:CODESG
ORG 100H
START: JMP MAIN ;1-Jump to instuctions
;-----------------------------------------------
PEYGHAM DB 0AH,0DH, 'number of 1 is:','$'
;-----------------------------------------------
MAIN PROC NEAR
MOV Bx,0 ;2-BL=0
MOV Cx,16 ;3-Number of rotate
MOV Ax,0010100011100100B ;4-Initial AL
AGAIN: ROL Ax,1 ;5-Rotate left 1 time AL
JNC NEXT ;6-If not carry go NEXT
INC Bx ;7-Else increment BL
NEXT:LOOP AGAIN ;8-Loop to AGAIN 8 times
MOV AH,09H ;9-Service 9H to display
LEA DX,PEYGHAM ;10-DX=PEYGHAM
INT 21H ;11-Active interrupt 21H
;
MOV AH,02H ;12-Service 2H to display
MOV Dx,bx ;13-ASCII code IN DL
ADD Dx,30H ;14-Change DL to ASCII
INT 21H ;15-Active interrupt 21H
; Come back to operating system
; -----------------------------
MOV AX,4C00H ;16- End of
INT 21H ;17- processing
MAIN ENDP ; End of procedure
CODESG ENDS ; End of segment
END START ; End of program