Пасьянс

xor ax,ax; обнуляем частное

mov al,bl; заносим наше число

div ten

or ah, 30h ;дописываем 3 в 4 старших бита, в AH ascii-код числа

;старший байт при выводе на экран будет второй цифрой

; (формат выводимого числа AL:AH)

mov count_otrit[1],ah

or al, 30h

mov count_otrit[0],al

Поскольку у нас числа только до 16 то нет необходимости проверять доп условия.

4. Отладка

Описание проблем и их решений при разработке пограмм.

При написании Windows-приложения возникали ошибки в фрагменте кода, где выбирался пункт меню Save:

filename=new char[100];

Память для имени сохраняемого файла выделялась, но при попытки освободить память функцией delete[] filename; программа завершала свою работу.

1 Способ – выделить память с помощью функции CString

CString filename("");

2 Способ – заменить char *filename; на char filename[280];

заменить filename=new char[100]; на

*filename=0;

lstrcpy(filename,"");

5. Используемая литература

1. Захарова З.Х. «Операционные системы. Учебное пособие»

2. Питер Абель «АССЕМБЛЕР И ПРОГРАММИРОВАНИЕ ДЛЯ IBM PC»

6. Приложение .

Файлы проекта.

1) Windows-приложение:

ФайлС++

#include <windows.h>

#include "resource.h"

#include <commdlg.h>

#include <tchar.h>

#include "stdio.h"

#include "stdlib.h"

#include <time.h>

/*массивы координат верхней левой и нижней правой точек прямоуголиников*/

int x0[16],

y0[16],

x1[16],

y1[16],

n[16]; // хранит код загружаемой картинки

char names[4][80]; //массив для хранения имен картинок которые будут рисоваться на картах

int opened[16]; /*массив открытых карт */

bool catched[16]; /*массив «пойманных» карт*/

// объявление сторк для названий картинок, которые отображаются на картах

#define ex0 "example2.bmp"

#define ex1 "example3.bmp"

#define ex2 "example4.bmp"

#define ex3 "example5.bmp"

#define cl "example1.bmp" //обратная сторона карты

int result = 0 ; //флаг

LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM);

void DrawCards(HWND hwnd,int x,int y,char *msg, int i, int j,float sdvig);

/* дескриптор приложения */

HINSTANCE hInstance;

/* редактор (поле ввода)*/

HWND EdtHwnd;

/* структура - диалог для открытия и сохранения файла */

OPENFILENAME ofn;

/* для операций с файлами */

HANDLE hSrc,hDest;

// буфер для хранения данных из файла

TCHAR pBuffer[100];

TCHAR bBuffer[70];

char szWinName[] ="MyWin"; /* имя класса окна */

void FillCoords(int i, int X0, int Y0, int X1, int Y1)

{

x0[i] = X0;

y0[i] = Y0;

x1[i] = X1;

y1[i] = Y1;

return;

}

void Catch(int i, int j)

{

catched[i] = catched[j] = true;

}

/* главная функция */

int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst,

LPSTR lpszArgs, int nWinMode )

{

HWND hwnd;

MSG msg;

WNDCLASSEX wcl;

int i, j, r0, r1;

/* определение класса окна */

wcl.hInstance=hThisInst; /* дескриптор данного экземпляра */

wcl.lpszClassName=szWinName; /* имя класса окна */

wcl.lpfnWndProc=WindowFunc; /* функция окна */

wcl.>


Страница: