汇编语言基于窗口的WIN32程序(实现网店商品信息管理程序的推荐度计算及商品信息显示的功能)

编程入门 行业动态 更新时间:2024-10-19 04:25:32

汇编语言基于窗口的WIN32程序(实现网店<a href=https://www.elefans.com/category/jswz/34/1765237.html style=商品信息管理程序的推荐度计算及商品信息显示的功能)"/>

汇编语言基于窗口的WIN32程序(实现网店商品信息管理程序的推荐度计算及商品信息显示的功能)

资源下载地址:
资源下载地址:

一、实验目的与要求

  • 熟悉 WIN32 程序的设计和调试方法;
  • 熟悉宏汇编语言中 INVOKE、结构变量、简化段定义等功能;
  • 进一步理解机器语言、汇编语言、高级语言之间以及实方式、保护方式之间的一些关系。

二、实验内容

编写一个基于窗口的 WIN32 程序,实现网店商品信息管理程序的推荐度计算及商品信息显示的功能(借鉴实验三的一些做法),具体要求如下描述。

功能一:编写一个基于窗口的 WIN32 程序的菜单框架,具有以下的下拉菜单项:

File   Action           Help
Exit   Recommendation  About
List

点菜单File下的Exit选项时结束程序;点菜单Help下的选项About,弹出一个消息框,显示本人信息,类似图 5.1 所示。点菜单 Action 下的选项Recommendation、List将分别实现计算推荐度或显示SHOP所有商品信息的功能(详见功能二的描述)。

图 3-1 菜单示例

功能二:要求采用结构变量存放商品的相关信息。商品数至少定义 5 种。

点菜单项 Recommendation 时,按照实验三的方法计算所有商品的推荐度。用 TD32 观察计算结果。

点菜单项 List 时,要求能在窗口中列出 SHOP 的所有商品的信息。具体显示格式自行定义,可以参照图 5.2 的样式(不要求用中文)。

图 5-2 商品信息显示示意图

三、实验过程

3.1 任务 1

3.1.1 设计思想

该基于窗口的程序是基于 WIN32 的标准框架实现的。该程序中还用到了 WIN32 的标准框架,其中包含了主程序、窗口主程序、窗口消息、处理程序以及用户处理程序。操作系统首先执行主程序,待主程序获得与本程序有关的基本信息后,在调用窗口主程序。窗口主程序创建窗口后,将说道的消息通过操作系统发送给窗口消息处理程序。窗口消息处理程序判断收到消息的类型,完成相应的功能

菜单栏的实现用到了.rc 文件。在主程序 winmain 中,程序将对菜单资源进行装载。再在窗口过程中对相应的菜单功能进行设计,即可完成相关菜单功能的实现。在实现菜单功能时,需要对子函数进行调用。在本次实验中,需要编写的子程序为计算推荐度和显示商品信息的子函数。

3.1.2 变量

ClassName:字节变量,存储窗口类字符串‘TryWinClass’
AppName:字节变量,存储窗口名字符串'Our First Window'
MenuName:字节变量,存储菜单名字符串'MyMenu'
DlgName:字节变量,存储字符串'MyDialog'
AboutMsg:字节变量,存储about显示的字符串'I Am CS1705 WMM',0
hInstance:字变量,存储句柄
CommandLine:字变量,存储命令行参数

3.1.3 源程序

  1. demo.asm 源文件
.386
.model   flat,stdcall
option   casemap:
none
WinMain  proto :
DWORD,:
DWORD,:
DWORD,:
DWORD
WndProc  proto :
DWORD,:
DWORD,:
DWORD,:
DWORD
Display  proto :
DWORD
Tjd		 proto :
DWORD
include      menuID.INC
include      D:
\masm32\INCLUDE\windows.inc
include      D:
\masm32\INCLUDE\user32.inc
include      D:
\masm32\INCLUDE\kernel32.inc
include      D:
\masm32\INCLUDE\gdi32.inc
include      D:
\masm32\INCLUDE\shell32.inc
includelib   D:
\masm32\LIB\user32.lib
includelib   D:
\masm32\LIB\kernel32.lib
includelib   D:
\masm32\LIB\gdi32.lib
includelib   D:
\masm32\LIB\shell32.lib
goods	     struct
gname			db	10 dup(0)
discount		db	0
inprice		db	0
outprice		db	0
innum			db	0
outnum			db	0
recommendation	db	0
goods      ends
.data
ClassName    db       'TryWinClass',0
AppName      db       'Our First Window',0
MenuName     db       'MyMenu',0
DlgName	     db       'MyDialog',0
AboutMsg     db       'I Am CS1705 WMM',0
hInstance    dd       0
CommandLine  dd       0
buf	    goods  <>
goods  <'Pen',10,35,56,70,25,'0'>
goods  <'Book',9,12,30,25,5,'0'>
goods  <'Pencil',9,1,4,50,6,'0'>
goods  <'Ruler',8,2,5,50,10,'0'>
goods  <'Bumf',10,3,1,100,1,'0'>
msg_gname			db		'GName',0
msg_discount		db		'Discount',0
msg_inprice			db		'In_Price',0
msg_outprice		db		'Out_price',0
msg_innum			db		'In_Num',0
msg_outnum			db		'Out_Num',0
msg_recommendation	db		'Recommendation',0
discount			db		2,1,1,1,2, '10','9','9','8','10'
inprice				db		2,2,1,1,1, '35','12','1','2','3'
outprice			db		2,2,1,1,1, '56','30','4','5','1'
innum				db		2,2,2,2,3, '70','25','50','50','100'
outnum				db		2,1,1,2,1, '25','5','6','10','1'
;;
recommendation		db		2,0,0,0, '0'
menuItem     db       0  ;### 3.1.4 实验步骤1. 按要求编写源程序。
2. 在 cmd 中编译和连接并运行程序。
3. 在菜单中点击 Help->About,观察并记录结果。
4. 在菜单中点击 Action->List,观察并记录结果,然后点击 Action->Recommendation 后再点击 Action->List,观察并记录结果。### 3.1.5 实验记录与分析1. 解压 MASM32 压缩包,在解压后的文件目录下,可以看到在 BIN 目录下有汇编(ML.exe/RC.exe)和连接(LINK.exe)等程序。2. 对例子中的 demo 文件进行编译和连接,编译和连接成功如图 3-3 所示。![](.png)<center>图 3-3 实验记录3. TD32 与 TD16 相同之处在于其功能、显示内容基本相同,不同之处在于 TD32 直接显示 32 位寄存器的内容,且在保护模式下 TD32	中不能查看与该程序段无关的代码段、数据段和堆栈段的内容,且其显示的偏移地址均为 32 位。16 位段程序一般用 16 位寄存器来进行数据的处理,代码段、数据段以及堆栈段的偏移地址均为 16 位。而在 WIN32 程序中的各种偏移地址均为 32 位,这就为创建更大的程序、存储更多的数据与编写更长的代码段创造了可能。除此以外,WIN32 程序还可包括.rc 文件,这样一来就可以将代码和菜单、对话框。图标、位图等资源相组合,从而实现各种强大的功能。4. 在菜单中选择 LIST,成功显示商品信息,如图 3-4 所示。![](.png)<center>图 3-4 实验记录5. 在菜单中选择 RECOMMENDATION,计算商品推荐度,稍等后再次点击 LIST,成功显示计算推荐度后的商品信息,如图 3-5 所示。![](.png)<center>图 3-5 实验记录6. 在菜单中选择 About,成功显示含有实验者信息的对话框,如图 3-6 所示。![](.png)<center>图 3-6 实验记录7. 在 DOS 系统中,输出是依靠 9 号功能调用实现的。将需要输出的语句首址传入寄存器 DX,再进行 9 号调用即可输出。而在 WIN32 中,输出是使用的 TEXTOUT 函数,其声明如下:```c++
BOOL TextOut(HDC hdc,//设备描述句柄int nXStart,//字符串的开始位置x坐标int nTStart,//字符串的开始位置y坐标LPCTSTR lpString,//字符串int cbString//字符串中的字符个数);

资源下载地址:
资源下载地址:

更多推荐

汇编语言基于窗口的WIN32程序(实现网店商品信息管理程序的推荐度计算及商品信息显示的功能)

本文发布于:2024-02-26 14:59:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1702919.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:商品信息   汇编语言   网店   管理程序   窗口

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!