ورود

View Full Version : سوال: ممنون میشم اشکالات این برنامه رو به من بگید؟



mojitba
یک شنبه 27 اردیبهشت 1388, 20:57 عصر
سلام دوستان. من باید برنامه ای بنویسم به این صورت: " در صورتی که بیش از سه کلید خاص (مثل Alt یا Shift) همزمان فشار داده شود، پیغام خطا در وسط صفحه نمایش نشان داده شود " حالا من این برنامه رو با سواد کم خودم نوشتم با استفاده از شیفت ریاضی به راست. در MASM و LINK هم مشکلی پیش نمی آد و بدون SEVERE ERROR فایل EXE ساخته میشه اما برنامه عملا کاری رو انجام نمیده . با توجه به سابقه ی کم من در اسمبلی در مورد حل کردن مشکلات این برنامه عقل من بیشتر قد نمیده. لطف کنید هر کدوم که وقت و حوصله اش رو دارید کمک کنید و اشکال برنامه رو گوشزد کنید. پیشاپیش ممنونم.

PAGE 100,110
TITLE 'MOJITBA' FOR FUN
;--------------------------------------------------------------------------------------
; DEFINE STACK SEGMENT
; -------------------------------------
.MODEL SMALL
STACKSG SEGMENT STACK 'STACK'
DW 32H DUP(0)
STACKSG ENDS
; DEFINE DATA SEGMENT
; -----------------------------------
DATASG SEGMENT 'DATA'
MSG DB 'ERROR' , '$'
SUM DB 0H
DATASG ENDS
; DEFINE CODE SEGMENT
; ------------------------------------
CODESG SEGMENT 'CODE'
ASSUME CS:CODESG, DS:DATASG, SS:STACKSG
MAIN PROC FAR
MOV AX,DATASG
MOV DS,AX
;---------------------CLEAR MONITOR----------------
CLS PROC NEAR
MOV AX,0600H
MOV CX,0000H
MOV DH,24
MOV DL,79
MOV BH,3H
INT 10H
CLS ENDP
;----------------------CODE------------------
MOV BL,SUM
MOV BL,0H
MOV AH,02H
INT 16H
MOV BH,AL
AGAIN: SAR BH,1
JNC AGAIN
INC BL
CMP BL,3
JNG AGAIN
;---------------------POINTER------------------
MOV AH,02H
MOV DH,13
MOV DL,40
INT 10H
;--------------------PRINT------------------
MOV AH,09H
LEA DX,MSG
INT 21H
;-------------------RET------------
MOV AX,4C00H
INT 21H
;--------------END------------
MAIN ENDP
CODESG ENDS
END MAIN

tdkhakpur
دوشنبه 28 اردیبهشت 1388, 00:51 صبح
سلام :
قسمت زیر رو دربرنامتون اصلاح من.
موفق باشید.
کد قبلیتون:


;----------------------CODE------------------
MOV BL,SUM
MOV BL,0H
MOV AH,02H
INT 16H
MOV BH,AL
AGAIN:
SAR BH,1
JNC AGAIN
INC BL
CMP BL,3
JNG AGAIN

کد اصلاح شده:


;----------------------CODE------------------
MOV BL,SUM
MOV BL,0H
AGAIN: ; اصلاح شده
MOV AH,02H
INT 16H
MOV BH,AL
SAR BH,1
JNC AGAIN
INC BL
CMP BL,3
JNG AGAIN