ПасьянсРефераты >> Программирование и компьютеры >> Пасьянс
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.>