汇编小程序
更新时间: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
《生命与环境》(原《生命科学》)中南2014年12月网络教育课程考试复习资料(试卷、模拟练习、课程作业)09-26
广告招牌如何才能吸引人啊08-25
高一教案第一章12-31
婚礼现场新郎求婚词02-28
国际法热点问题及评述05-03
流光使用教程03-14
描写月亮的优美句子大全20则_唯美的句子03-25
- 《江苏省环境水质(地表水)自动监测预警系统运行管理办法(试行)》
- 安乐死合法化辩论赛立论稿(浙大新生赛)
- 公共科目模拟试卷公务员考试资料
- 我国固定资产投资FAI对GDP的影响
- 大学生创新创业训练计划项目申请书大创项目申报表
- 完美版—单片机控制步进电机
- 2013资阳中考化学试题
- 18.两位数减一位数退位(397道)
- 工程量计算规则
- 二年级操行评语(下)
- 第3章 流程控制语句
- 浅基桥墩加固技术
- 课题研究的主要方法
- 5100软件说明书 - 图文
- 车间技术员年终总结
- 关于印发《中铁建工集团开展项目管理实验室活动方案》的通知
- 经典诵读结题报告
- 地下水动力学习题答案
- 2018年全国各地高考数学模拟试题平面解析几何试题汇编(含答案解
- 街道办事处主任2018年度述职述廉报告
- 汇编
- 程序
- 超有用日语论文题目
- 新人教版九年级历史下册第14课冷战中的对峙综合测试 - 图文
- MA5600T(SCUB&SCUL) V800R008C05SPC312(For SPC100) 升级指导书
- 2016-2017公路造价师继续教育在线自测答案-共10科
- 湖南大学操作系统作业(3) - 图文
- 高考小说阅读训练(附答案)
- 面包的基础知识及原理 - 图文
- 2004年上海市学前教育课程指南试行稿
- 贵州省普通高中学籍管理办法
- 六年级下册语文总复习资料
- 保压、试水报告表
- 数据库复习题答案
- 天津万科水晶城玻璃厂可行性研究报告
- UML面向对象分析与设计教程课后习题答案(胡荷芬 高斐)选择题部分
- 15、环境管理与监测计划
- 给水排水管网系统期末考试复习资料及笔记
- 中国工商银行工行实习报告
- 关于感恩的思考
- 外贸函电试卷B答案
- 当今纸质家具的发展及趋势研究1 - 图文