- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
混合编程课程设计-c跟汇编
实验目的与要求
输入多个有序数据,编程实现,在有序表中插入数据元素(插入后依然为有序表),并输出该有序表的数据元素。要求使用C++和汇编语言混合编程,数据的输入和结果的输出使用图形界面,用C++实现,在有序表中插入数据元素用汇编语言实现。
实验方案
覆写以改变回车键和ESC键退出程序
void CweijiDlg::OnOK()
{
// TODO: 在此添加专用代码和/或调用基类
//CDialogEx::OnOK();//注释掉就可以了
}
BOOL CweijiDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (pMsg-message == WM_KEYDOWN pMsg-wParam == VK_ESCAPE) return TRUE;
return CDialogEx::PreTranslateMessage(pMsg);
}
插入按钮
void CweijiDlg::OnInsert(){// TODO: 在此添加控件通知处理程序代码UpdateData(true);rtable = ;int i =0,count=0;CString r;int intarr[40];int in = _ttoi(input);char *tablecp = (char *)(LPCTSTR)table;vectorCString vStr = Split(table);for (CString ele : vStr){const wchar_t *temp = (wchar_t *)(LPCTSTR)ele;intarr[i] = _ttoi(temp);count++;i++;}int mark = 0;__asm{mov ecx, countmov ebx, 0check : mov eax, intarr[ebx * 4]mov edx, incmp eax, edxjz exist; 如果相等则跳到exist执行mov mark, 0jg insert; 如果表中元素大于插入元素,则直接插入到表中元素的位置add ebx, 1loop checkmov ecx, 1; 如果遍历完后,就说明插入数比有序表中的数都大mov ebx, count;那么应该直接在末尾输入jmp insert1insert : add ecx, 1insert1 : mov edi, intarr[ebx * 4]mov intarr[ebx * 4], edxmov edx, ediadd ebx, 1loop insert1add count, 1jmp doneexist : mov mark, 1jmp donedone : nop}if (mark){MessageBox(_T(输入的数字已存在!));}else{CString rt;for (i = 0; i count; i++){if (icount-1)rt.Format(_T(%d,), intarr[i]);elsert.Format(_T(%d), intarr[i]);rtable += rt;}}UpdateData(false);}
用逗号分割字符串的函数
vectorCString CweijiDlg::Split(CString string){CString oriStr = string;vectorCString strVec;const char *P = ,;while (true){CString n = oriStr.SpanExcluding((LPCTSTR)P);strVec.push_back(n);oriStr = oriStr.Right(oriStr.GetLength() - n.GetLength() - 1);if (oriStr.IsEmpty()){break;}}return strVec;}
调试结果和数据处理
插入整数:
插入负数:
插入已存在的数字:
结论
使用汇编和C++的混编实现了有序表的MFC图形界面,通过利用CString字符串类型输入和呈现数据。数据使用CString可以实现一整串数据的输入,且可以实现负数和正数同时输入。再插入一个数时,这个数要插入有序表位置的数先被保存在一个临时变量中,这个数插入到有序表中,保存到临时变量原先有序表的数通过遍历完整个有序表就实现了新的数插入有序表。
问题与改进
在将字符串分
您可能关注的文档
最近下载
- 2025年上半年教师资格考试高中语文学科知识与教学能力试卷与参考答案.docx VIP
- 平地机零件手册.pdf
- 贵州政立矿业有限公司平安二矿非煤矿山水害专项治理工程实施方案.doc
- 教师资格考试高中语文学科知识与教学能力新考纲必刷题解析(2025年).docx VIP
- 2025年教师资格考试高中学科知识与教学能力语文重点难点题库详解.docx VIP
- 控烟知识培训远离香烟完整版课件.pptx VIP
- 2025年生活会(四个带头)个人对照检查材料【含违纪行为典型案例剖析】2篇文.docx VIP
- 历年医学考研复试真题——麻醉学.pdf
- 基于神经网络手写数字识别系统设计与实现.doc
- 社区概述幻灯片.ppt
文档评论(0)