Сейчас на форуме: (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› регистр не меняет значение, так должно быть ? |
Посл.ответ | Сообщение |
|
Создано: 31 июля 2014 00:01 · Поправил: andrush · Личное сообщение · #1 из учебника кипа ирвайна, надо определить значения регистров. Code:
Вопрос почему AX пустой, только на mov ax, word ptr [esi-4] поменялся ? ![]() |
|
Создано: 31 июля 2014 00:17 · Личное сообщение · #2 |
|
Создано: 31 июля 2014 00:20 · Поправил: Vovan666 · Личное сообщение · #3 |
|
Создано: 31 июля 2014 00:29 · Поправил: andrush · Личное сообщение · #4 plutos пишет: а что находится по адресу esi+2, esi+6, esi -4? наверное 2 , 4 , 2 ..хз , токо учусь Добавлено спустя 13 минут Vovan666 пишет: должно быть либо myDoubles WORD 1,2,3,4,5 либо movzx eax, word ptr [esi+0*4] movzx eax, word ptr [esi+1*4] ... movzx eax, word ptr [esi+5*4] видимо, в учебнике так написано чтоб не запутать, ибо ещё не дошли до детального movzx\movsx ![]() ![]() |
|
Создано: 31 июля 2014 00:47 · Личное сообщение · #5 |
|
Создано: 31 июля 2014 00:53 · Поправил: andrush · Личное сообщение · #6 Vovan666 пишет: тогда при myDoubles DWORD 1,2,3,4,5 mov ax, word ptr [esi+0] mov ax, word ptr [esi+4] mov ax, word ptr [esi+8] итд задача так поставлена . цитирую : Задача повышенной сложности. Определите значения регистров после выполнения каждой из приведенных ниже команд: mov esi,myPointer mov ax,WORD PTR [esi+2] mov ax,WORD PTR [esi+6] mov ax,WORD PTR [esi-4] .. язык ассемблера для процессоров intel ирвин к.р. ![]() |
|
Создано: 31 июля 2014 01:11 · Личное сообщение · #7 Что за дебил такую задачу составлял, переводил, или переписывал? Вот оригинал с решением http://site.iugaza.edu.ps/ayash/files/Assembly_Quiz3_Sol.pdf при том построении как у тс mov esi,myPointer mov ax,WORD PTR [esi+2] =0 mov ax,WORD PTR [esi+6] =0 mov ax,WORD PTR [esi-4] = все что угодно, возможен даже вылет. ![]() |
|
Создано: 31 июля 2014 01:24 · Личное сообщение · #8 Vovan666 пишет: Что за дебил такую задачу составлял, переводил, или переписывал? Вот оригинал с решением http://site.iugaza.edu.ps/ayash/files/Assembly_Quiz3_Sol.pdf при том построении как у тс mov esi,myPointer mov ax,WORD PTR [esi+2] =0 mov ax,WORD PTR [esi+6] =0 mov ax,WORD PTR [esi-4] = все что угодно, возможен даже вылет. вот это mov esi,OFFSET myBytes mov ax,[esi] mov eax,DWORD PTR myWords я убрал,там вопросов не возникло, а остальное тоже самое... ответы на http://site.iugaza.edu.ps/ayash/files/Assembly_Quiz3_Sol.pdf совпадают,ничего не вылетает. пошёл заново читать,разбираться почему нули. ) Спасибо Добавлено спустя 31 минуту а ннет, вру..без myWords WORD 8Ah,3Bh,72h,44h,66h не то показывает, удалил чтоб здесь лишнего кода не вылаживать, а он оказывается нифига не лишний.впредь буду вылаживать как есть. ![]() |
|
Создано: 31 июля 2014 06:39 · Поправил: dosprog · Личное сообщение · #9 Смысл задачки в старпосте в том, что word ptr [esi+2 +2*x] при x=0,1,2,3,4 - это старшие слова от двойных слов 1, 2, 3, 4, 5. Эти сташие слова во всех пяти случаях и будут равны 0. А вот обращение [esi-4] это в данном контексте безусловная ошибка. Так делать нельзя. Хотя скорей всего там тоже окажется 0 - выравнивание хвоста предыдущего сегмента. ![]() |
|
Создано: 31 июля 2014 10:22 · Личное сообщение · #10 Глянь http://site.iugaza.edu.ps/ayash/files/Assembly_Quiz3_Sol.pdf и поймешь что листинг не полный. Там перед двордами еще ворды идут и [esi-4] обращается к предпоследнему ворду. Добавлено спустя 5 минут andrush пишет: пошёл заново читать,разбираться почему нули. ) Чтобы лучше разобраться попробуй myDoubles DWORD 12345678h,23456789h,34567890h,45678901h,56789012h ![]() |
|
Создано: 31 июля 2014 11:24 · Поправил: Rainbow · Личное сообщение · #11 |
|
Создано: 31 июля 2014 16:29 · Поправил: dosprog · Личное сообщение · #12 )) Rainbow, тогда уж так: mov esi, myPointer mov ecx, (myPointer-myDoubles)/4 lp: cld lodsd shr eax, 10h call dumpregs call waitmsg loop lp Code:
![]() |
|
Создано: 31 июля 2014 16:36 · Личное сообщение · #13 |
|
Создано: 31 июля 2014 16:40 · Поправил: dosprog · Личное сообщение · #14 Да уж. Но мне бы не хотелось сейчас оказаться в положении изучающего программирование с нуля. Сильное ощущение, что пудрят мозг и засоряют лишними на начальном этапе непонятными вещами. Например, этого вопроса у ТС не возникло бы в принципе, если бы он прогонял программу в отладчике. Для DOS-программ есть простой стандартный DEBUG.EXE. Для WIN32 - даже не знаю, что предложить. ![]() |
|
Создано: 31 июля 2014 16:46 · Поправил: ThugboyZ · Личное сообщение · #15 |
|
Создано: 31 июля 2014 16:53 · Поправил: dosprog · Личное сообщение · #16 ThugboyZ пишет: dosprog пишет: Для WIN32 - даже не знаю, что предложить. ------ Тонко W32DASM, Ольга и ида жа.Или у Вас самопальный ? Я понял иронию. Просто сейчас пытаюсь оглядываться далеко назад и вспоминать свои собственные ощущения. В этом случае я имел в виду простой отладчик, у которого в диалоговом режиме можно просто спросить, например: R EAX D ESI D Хотя, ..ну, не знаю. Всё течёт, всё меняется. ![]() |
|
Создано: 31 июля 2014 20:52 · Личное сообщение · #17 |
![]() |
eXeL@B —› Вопросы новичков —› регистр не меняет значение, так должно быть ? |