| CodeGuru Home | VC++ / MFC / C++ | .NET / C# | Visual Basic | Newsletters | VB Forums | Developer.com |
|
|||||||
| Assembly Questions and Answers for Assembly here! |
![]() |
|
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
DMA programming
the following code was meant to do a memory to memory transfer of 11 bytes from the data segment offset 00h to the data segment offset 20h .i had expected the string "hello world" to be in the datasegment offset 20h.plz tell me where the code went wrong and how to correct it.
thanks a lot. .MODEL SMALL .STACK 64 .386 .DATA ORG 00 SOURCE DB 'HELLO WORLD' ORG 20 DESTINATION DB 11 DUP(?) .CODE MAIN PROC FAR MOV AX,@DATA MOV DS,AX mov al,00000001b ;DISABLE DMA 1 out 08h,al MOV AL,00b ;CLEAR BYTE POINTER OUT 0CH,AL MOV AX,ds:00 ;CHANEL 0 BASE ADDRESS OUT 00H,AL MOV AL,AH OUT 00H,AL MOV AL,0FH ;DMA PAGE 0 OUT 87H,AL NOP OUT 87H,AL MOV AX,ds:20 ;CHANEL 1 BASE ADDRESS OUT 02H,AL MOV AL,AH OUT 02H,AL MOV AL,00H ;DMA PAGE 1 OUT 83H,AL MOV AL,11 ;CHANEL 1 BASE COUNT OUT 02H,AL mov al,00010001b ;ENABLE DMA OUT 08H,AL MOV AL,0000000100b ;REQUEST REGISTER OUT 09H,AL WAIT1: IN AL,8H ;READ STATUS REGISTER AND AL,00000010b CMP AL,0 JNZ WAIT1 ;WAIT UNTIL TERMINAL COUNT REACHED MOV AH,4CH INT 21H MAIN ENDP END MAIN |
![]() |
| Bookmarks |
|
||||||
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|