ASM 之 Hello World(附)
来源:互联网 发布:ios视频录制软件 编辑:程序博客网 时间:2024/06/05 18:11
参考数据:http://blog.csdn.net/hhf383530895/article/details/4509844
刚刚的程序如下:
DATA SEGMENT;NOTE DB 'Hello World!',0ah,0dh,'$'DATA ENDS;CODE SEGMENT;ASSUME CS:CODE,DS:DATA;BEGIN:MOV AX,DATA;MOV DS,AX;MOV DX,OFFSET NOTE;MOV AH,09H;INT 21H;MOV AH,4CH;INT 21H;CODE ENDS;END BEGIN
经过资料的查询掌握如下知识:
DATA SEGMENT >> 数据段定义
NOTE 为自定义标识符而不是系统标志(相当于高级语言中的变量名) $为字符串结束标志
CODE SEFMENT >> 代码段定义
ASSUME CS:CODE,DS:DATA 将数据段指定到DS寄存器,将代码段指定到CS寄存器
BEGIN:MOV AX,DATA 将数据段数据初始化至AX累加器
MOV DS,AX 将AX中的数据初始化至DS数据段寄存器(与ASSUME中一样了?)
MOV DX,OFFSET NOTE 将NOTE中的字符串数据加载到数据通用寄存器DX
MOV AH,09H 指定执行指令(09H代表显示数据)
INT 21H 执行先前指定的执行命令
MOV AH 4CH(4CH为中断命令)
经过如上知识的掌握,做了如下测试,将代码修改为如下:
DATA SEGMENT;NOTE DB 'Hello World!',0ah,0dh,'$'TESTGO DB 'My test datas...$'DATA ENDS;CODE SEGMENT;ASSUME CS:CODE,DS:DATA;BEGIN:MOV AX,DATA;MOV DS,AX;MOV DX,OFFSET NOTE;MOV AH,09H;INT 21H;MOV DX,OFFSET TESTGO;MOV AH,09H;INT 21H;MOV AH,4CH;INT 21H;CODE ENDS;END BEGIN
//经测试以上程序达到了预想的目的,输出Hello World!之后继续输出My test datas...
//发现INT 21H执行的时候是与MOV AH,XX配对执行的;于是想到将数据放到DX中后,暂不执行,再次初始化不同的数据到DX,查看数据结果:
将代码做如下修改:
DATA SEGMENT;NOTE DB 'Hello World!',0ah,0dh,'$'TESTGO DB 'My test datas...$'TESTAO DB 'Is printf ?$'DATA ENDS;CODE SEGMENT;ASSUME CS:CODE,DS:DATA;BEGIN:MOV AX,DATA;MOV DS,AX;MOV DX,OFFSET NOTE;MOV AH,09H;INT 21H;MOV DX,OFFSET TESTGO;MOV AH,09H;MOV DX,OFFSET TESTAO;INT 21H;MOV AH,4CH;INT 21H;CODE ENDS;END BEGIN
测试结果:TESTAO数据输出,TESTGO 数据不输出;证实INT 21H 与 MOV AH,09H 配对时:输出当前DX中的数据
//注:
测试过程中使用TEST 作为标志时,发现TEST为系统保留标志符...报警告信息为:Reserved word used as symbol:TEST
为了查看方便,将程序结构做如下排版:
DATA SEGMENT;NOTE DB 'Hello World!',0ah,0dh,'$'TESTGO DB 'My test datas...$'TESTAO DB 'Is printf ?$'DATA ENDS;CODE SEGMENT;ASSUME CS:CODE,DS:DATA;BEGIN:MOV AX,DATA;MOV DS,AX;MOV DX,OFFSET NOTE;MOV AH,09H;INT 21H;MOV DX,OFFSET TESTGO;MOV AH,09H;INT 21H;MOV AH,4CH;INT 21H;CODE ENDS;END BEGIN
- ASM 之 Hello World(附)
- ASM 之 Hello World!(附2)
- ASM 之 Hello World!
- [asm]Hello world!
- asm 写hello world
- 输出"HELLO WORLD" ASM
- win32 asm Hello World Demo
- asm 的hello world 2011.04.28
- asm-elf 练习hello,world练练手感
- hibernate之Hello world
- Spring之Hello World
- Lucene之Hello world
- DWR之HELLO world
- JNI 之 hello world
- ISAPI之Hello world
- Spring之Hello World
- ACE之hello world
- Hello,world之Erlang
- C#绘图线
- 一个30年老程序员的回顾(八)
- 浅谈Web系统的三种模型
- 模式设计(三)------状态模式
- 在MFC的单文档里,每个类获得其他类指针的一套方法
- ASM 之 Hello World(附)
- android https 连接建立
- 数据探查(一)
- 一种缓存切片更新问题的解决方法
- informatica转换
- Can't find model for source store
- The model used to open the store is incompatible with the one used to create the store
- AVLTree 二叉平衡树 实现
- 2012.11