汇编小程序
更新时间:2023-11-04 21:28:01 阅读量: 综合文库 文档下载
[movsx的小例子]
TITLE qksb
; Author: TT
; Creation Date: 2012/07/05 ; Revisions: 1.0
INCLUDE Irvine32.inc data SEGMENT data ENDS .code main PROC mov bx,0A69Bh
movsxeax,bx ;EAX=FFFFA69Bh callDumpRegs exit main ENDP END main
[movzx的小例子]
TITLE qksb
; Author: TT
; Creation Date: 2012/07/05 ; Revisions: 1.0
INCLUDE Irvine32.inc data SEGMENT val1 byte 1 data ENDS .code main PROC mov eax,0
movzx eax,val1 ;这里不能直接用mov指令,因为eax是32位而val1是8位的~ call DumpRegs exit main ENDP END main
[从控制台读一个字符然后输出]
TITLE qksb
; Author: TT
; Creation Date: 2012/07/05 ; Revisions: 1.0
INCLUDE Irvine32.inc data SEGMENT char byte ? data ENDS .code main PROC mov eax,0 callreadchar movchar,al call writechar exit main ENDP END main
[N皇后问题]
Title Nqueen
includelib user32.lib includelib kernel32.lib includelib Irvine32.lib include Irvine32.inc .data
getsize BYTE \输入N(正整数): \nosolution BYTE \没有解决方法\space BYTE \thesize BYTE ? solutionnum BYTE 0 queen BYTE 50 dup(0) .code
chargelinePROC,i:BYTE,j:BYTE LOCAL k:BYTE
compare BYTE 0
movesi, OFFSET queen mov compare,0 moval,i movk,al inc k; movzxeax,k .REPEAT mov al,[esi] .IF al == j mov compare,1 .endif incesi dec k moval,k .UNTIL al == 1 ret
chargeline ENDP
charge1PROC,i:BYTE,j:BYTE LOCAL k:BYTE LOCAL kk:BYTE movesi, OFFSET queen
mov compare,0 mov kk,1 moval,i movk,al inc k movzxeax,k .REPEAT mov al,[esi] subal,j addal,i subal,kk .IF al == 0 mov compare,1 .endif incesi inckk dec k moval,k .UNTIL al == 1 ret charge1 ENDP
charge2PROC,i:BYTE,j:BYTE LOCAL k:BYTE LOCAL kk:BYTE movesi, OFFSET queen mov compare,0 mov kk,1 moval,i movk,al inc k movzxeax,k .REPEAT mov al,[esi] subal,j subal,i addal,kk .IF al == 0 mov compare,1 .endif incesi inckk dec k moval,k
.UNTIL al == 1 ret charge2 ENDP
placePROC,row:BYTE,j:BYTE movesi,OFFSET queen movzxeax,row addesi,eax decesi moval,j mov [esi],al ret placeendp
print PROC LOCAL k:BYTE movzxecx,thesize mov k,1
movesi,OFFSET queen L2:
movzxeax,k callWriteDec
movedx, OFFSET space callWriteString mov al,[esi] callWriteDec callCrlf incesi inc k loop L2 callCrlf ret print ENDP
trychessPROC,row:BYTE LOCAL j:BYTE mov j,1
movzxecx,thesize .REPEAT
INVOKE chargeline,row,j moval,compare
cmp al,1 jz L1
INVOKE charge1,row,j mov al,compare cmp al,1 jz L1
INVOKE charge2,row,j mov al,compare cmp al,1 jz L1
INVOKE place,row,j mov al,thesize .IF al == row inc solutionnum INVOKE print exit .ELSE inc row
INVOKE trychess,row dec row .endif L1:
inc j mov al,j
.UNTIL al > thesize RET trychess ENDP
main PROC
movedx,OFFSETgetsize call WriteString callReadInt movthesize,al callCrlf
INVOKE trychess,1 moval,solutionnum .IF al == 0
movedx,OFFSETnosolution callWriteString .endif exit main ENDP END main
[加法的例子]
TITLE qksb
; Author: TT
; Creation Date: 2012/07/05 ; Revisions: 1.0
INCLUDE Irvine32.inc data SEGMENT val1 DWORD 10000h val2 DWORD 40000h val3 DWORD 20000h finalval DWORD ? data ENDS .code main PROC callClrscr mov eax,val1 add eax,val2 sub eax,val3
call writeint ;这个指令会将数用10进制输出,
如何用16进制还不知道…
call delay ;这个就是实现时间延迟咯~ exit main ENDP END main
[生成随机数]
TITLE qksb
; Author: TT
; Creation Date: 2012/07/09 ; Revisions: 1.0
INCLUDE Irvine32.inc data SEGMENT data ENDS .code main PROC call randomize mov ecx,10 L1:
mov eax,10 callrandomrange callwritedec callcrlf loop L1 callwaitmsg exit main ENDP END main
[输出整数的例子]
TITLE qksb
; Author: TT
; Creation Date: 2012/07/03 ; Revisions: 1.0
INCLUDE Irvine32.inc data SEGMENT
str1 BYTE 'my name is tutu$','$' data ENDS .code
main PROC moveax , 5; addeax , 4;
call writeint ;最后以十进制数输出~ exit main ENDP
END main
[输出字符串的例子]
TITLE qksb
; Author: TT
; Creation Date: 2012/07/03 ; Revisions: 1.0
INCLUDE Irvine32.inc data SEGMENT
str1 byte '姓名:涂李傲',0 str2 byte '学号:2010013234',0 str3 byte '班级:软01',0 str4 byte '性别:男',0
data ENDS .code main PROC
movedx,offset str1 call writestring callCrlf
movedx,offset str2 callwritestring callCrlf
movedx,offset str3 callwritestring callCrlf exit main ENDP
END main
用户输入一个东西然后用2进制,10进制和16进制
输出
TITLE qksb
; Author: TT
; Creation Date: 2012/07/05 ; Revisions: 1.0
INCLUDE Irvine32.inc data SEGMENT
hehe byte \请输入一个整数: cundword ? data ENDS .code main PROC
;提示用户输入一个整数 movedx,offsethehe callwritestring call readint mov cun,eax ;用十进制显示 call crlf call writeint call crlf
\ call writedec ;用十六进制显示 call crlf call writehex ;用二进制显示 call crlf call writebin ;现在停下~ call crlf call waitmsg exit main ENDP END main
[整数数组求和的例子]
TITLE qksb
; Author: TT
; Creation Date: 2012/07/05 ; Revisions: 1.0
INCLUDE Irvine32.inc
data SEGMENT
intarray word 100h,200h,300h,400h data ENDS .code main PROC
mov edi,offset intarray ;这个就是间接寻址数了~
mov ecx,lengthof intarray ;循环计数器 mov ax,0 ;累加计数器清零~ L1:
add ax,[edi]
add edi,type intarray loop L1
call DumpRegs ; exit main ENDP END main
显示的结果是EAX=770E0A00,后面4位是0A00=100+200+300+400所以是正确的!
正在阅读:
汇编小程序11-04
断了线的风筝与人02-14
卖糖人的老爷爷作文600字07-06
关于论文格式的介绍09-13
工程交通组织方案及保证措施09-01
小学生二年级精选关于水仙花的作文06-13
安徽省淮北市相山区2022届九年级语文上学期第一次质量调研试题(04-19
(全国通用)201X年高考生物总复习《人类遗传病》专题演练(一)04-28
混凝土结构的腐蚀机理及预防措施07-21
养殖水环境化学习题12-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 汇编
- 程序
- 超有用日语论文题目
- 新人教版九年级历史下册第14课冷战中的对峙综合测试 - 图文
- MA5600T(SCUB&SCUL) V800R008C05SPC312(For SPC100) 升级指导书
- 2016-2017公路造价师继续教育在线自测答案-共10科
- 湖南大学操作系统作业(3) - 图文
- 高考小说阅读训练(附答案)
- 面包的基础知识及原理 - 图文
- 2004年上海市学前教育课程指南试行稿
- 贵州省普通高中学籍管理办法
- 六年级下册语文总复习资料
- 保压、试水报告表
- 数据库复习题答案
- 天津万科水晶城玻璃厂可行性研究报告
- UML面向对象分析与设计教程课后习题答案(胡荷芬 高斐)选择题部分
- 15、环境管理与监测计划
- 给水排水管网系统期末考试复习资料及笔记
- 中国工商银行工行实习报告
- 关于感恩的思考
- 外贸函电试卷B答案
- 当今纸质家具的发展及趋势研究1 - 图文