我用的是win7 32位系统,使用汇编语言编写程序的时候,输入输出字符串的汇编程序可以顺利执行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用的是win7 32位系统,使用汇编语言编写程序的时候,输入输出字符串的汇编程序可以顺利执行相关的知识,希望对你有一定的参考价值。
并且可以显示出结果,但是编一个查找10个数中的最大最小值的程序是却不能显示出结果,命令框中只显示按任意键继续,,,求指导,为什么。。
由于提到的Windows7,想必应该要学习win32汇编。---------------------------------------------- -------------------------------------
我推荐,使用的MASM32和UEStudio的组合环境学习的Win32装配。
注意:是不是所有的孩子MASM32 MASM。
[MASM32是MASM爱好者,国内外组织和编写一个程序包,目前最高版本的10.0软件MASM32不是微软的正式发布,微软正式发布了最新版本的软件版本,6.15版本的,开始的MASM系列从6.11版本发布支持版本的Microsoft Windows编程,6.11版本以前的版本不支持只能用于windows编程,写DOS程序。 MASM windows编程的教学用书“的32位汇编??语言程序在windows环境下的第二版。】
UEStudio的官方网站: http://www.ultraedit.com/ 本80元。挺贵的,我用的是破解版(这篇评论,但确实是肉疼超过500元)。
UEStudio的是一个综合的开发环境,内部提供支持MASM32的新建项目向导“可以做一个Hello World MASM32汇编继续进行下一个步骤。使用简单,开发效率是相当高的。
------- -------------------------------------------
其他: 64汇编或MMX,SSE之类的,然后win7下安装Cygwin。的VisualStudio下面的64编译器ML64.exe的,拥有它。编辑器,我还是建议UEStudio的,当然,免费的记事本+ +也不错,同样突出显示的代码,不能集成的编译器罢了。
------------------------------------ ---------------------------
16位组件结构的学习环境。有一个很好的软件,EMU8086。自己的搜索栏,一样的试用版到期后,卸载,然后重新安装一遍。
------------------------ --------------------------------------------
汇编语言:
HLA(汇编语言),这也是很不错的,文法学校一起轻松地设计类库也很不错,但它已经脱离了相应的机器语言,有一定的影响的实际过程了解硬件的机器。
[NASM这也是可以使用Windows和Linux平台的语法是比较容易学习,以及支持64位。 参考技术A 还是用CX写的简单一些 参考技术B 能给源码出来么追问
你能给我一个正确的这个程序的汇编代码吗?我的现在找不到了。。
追答只能输入正数 , 不能超过255
ASSUME CS:CODE,DS:DATA,SS:STACK
DATA SEGMENT
MSG1 DB 'PELESA INPUT 10 NUM :$'
MSG2 DB 'THE MAX NUM IS $'
MSG3 DB 13,10,'THE MIN NUM IS $'
MAX DB 0
MIN DB 255
H10 DB 10
DATA ENDS
STACK SEGMENT
DB 128 DUP (0)
TOS DB '$'
STACK ENDS
CODE SEGMENT
CONVERT PROC
MOV BL,10
MOV CX,0
L:
DIV BL
ADD AH,30H
INC CX
PUSH AX
MOV AH,0
CMP AL,0
JNZ L
O:
POP DX
MOV DL,DH
MOV DH,0
MOV AH,2
INT 21H
LOOP O
RET
CONVERT ENDP
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,OFFSET TOS
LEA DX,MSG1
MOV AH,9
INT 21H
MOV BX,0
GET:
MOV AH,1
INT 21H
CMP AL,13
JE OVER
CMP AL,' '
JE GETONE
SUB AL,30H
MOV DL,AL
MOV AL,BL
MUL H10
ADD AL,DL
MOV BL,AL
JMP GET
GETONE:
CMP BL,MAX
JBE NEXT
MOV MAX,BL
NEXT:
CMP BL,MIN
JAE CONT
MOV MIN,BL
CONT:
INC CX
MOV BX,0
JMP GET
OVER:
CMP BL,MAX
JBE NEXT1
NEXT1:
CMP BL,MIN
JAE CONT1
MOV MIN,BL
CONT1:
INC CX
LEA DX,MSG2
MOV AH,9
INT 21H
MOV AH,0
MOV AL,MAX
CALL CONVERT
LEA DX,MSG3
MOV AH,9
INT 21H
MOV AH,0
MOV AL,MIN
CALL CONVERT
MOV AX,4C00H
INT 21H
CODE ENDS
END START
正整数分组(动态规划,但我用的是枚举)
个人心得:这题其实是一个运用动态规划的题目,将n个整数放在俩个背包里,平均下来就是sum/2,此时找到放在背包中最大的就可以了,
此时相减必然是最小的差。而我根据动态规划一步一步得到最优解的思想,从第一个开始枚举,到第n个数会有2^n个数据太大了,n可取100,
听说n=32,就能买下整个拉斯维加斯了。所以我用了stack和set就排重,本来以为会超时,但没想到过了。
题目:
第1行:一个数N,N为正整数的数量。 第2 - N+1行,N个正整数。 (N <= 100, 所有正整数的和 <= 10000)
输出这个最小差
5 1 2 3 4 5
1
1 #include<iostream> 2 #include<cstring> 3 #include<string> 4 #include<cstdio> 5 #include<vector> 6 #include<cmath> 7 #include<stack> 8 #include<set> 9 #include<queue> 10 #include<algorithm> 11 using namespace std; 12 #define in 1000000005 13 int main() 14 { 15 int n,number[105]; 16 cin>>n; 17 for(int i=0;i<n;i++) 18 cin>>number[i]; 19 stack<int >pq; 20 set<int >s; 21 if(n==1) 22 { 23 cout<<number[0]<<endl; 24 } 25 else 26 { 27 int x=fabs(number[0]-number[1]); 28 int y=number[0]+number[1]; 29 s.insert(x),s.insert(y); 30 set<int >::iterator it; 31 for(int i=2;i<n;i++) 32 { 33 for(it=s.begin();it!=s.end();it++) 34 { 35 pq.push(*it); 36 } 37 s.clear(); 38 while(!pq.empty()) 39 { 40 int t=pq.top(); 41 pq.pop(); 42 s.insert(t+number[i]); 43 s.insert(fabs(t-number[i])); 44 } 45 } 46 int mina=in; 47 for(it=s.begin();it!=s.end();it++) 48 if(mina>*it) mina=*it; 49 s.clear(); 50 cout<<mina<<endl; 51 52 } 53 return 0; 54 }
以上是关于我用的是win7 32位系统,使用汇编语言编写程序的时候,输入输出字符串的汇编程序可以顺利执行的主要内容,如果未能解决你的问题,请参考以下文章
win7用“照片库查看器”(非windows照片查看器)看图,提示不是有效的32位应用程序
汇编语言中的CPU的16位,32位和当今操作系统所指的32位,64位概念有点模湖,请大侠们赐教.