急急急.....关于输出问题
时间:2011-11-29
来源:互联网
是这样吗:
MOV AX,5
INT 21H
是这样吗??
作者: qscool1987 发布时间: 2011-11-29
mov ah, 2 mov dl, '5' ; 需要将数值 5 转换为显示的字符 '5' 放在 DL 寄存器里 int 21h
作者: zara 发布时间: 2011-11-29
输出一个字符,可以用 int21h 的字符输出功能吧。
Assembly code
mov ah, 2
mov dl, '5' ; 需要将数值 5 转换为显示的字符 '5' 放在 DL 寄存器里
int 21h
可是没反应啊,输出屏幕上没有5啊
作者: qscool1987 发布时间: 2011-11-29
作者: zara 发布时间: 2011-11-29
;这是自动生成的代码模板 STACKS SEGMENT STACK ;堆栈段 DW 128 DUP(?) ;注意这里只有128个字节 STACKS ENDS DATAS SEGMENT ;数据段 ;请在这里定义您的数据 ;MOV AH, 2 MOV DL, '5' ; 需要将数值 5 转换为显示的字符 '5' 放在 DL 寄存器里 INT 21H DATAS ENDS CODES SEGMENT ;代码段 ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS ;初始化 MOV DS,AX ;请在这里添加您的代码 MOV AX,4C00H ;退出程序 INT 21H CODES ENDS END START
我用的是轻松汇编
作者: qscool1987 发布时间: 2011-11-29
作者: zara 发布时间: 2011-11-29
作者: hushoubo 发布时间: 2011-11-29
Assembly code
;这是自动生成的代码模板 STACKS SEGMENT STACK ;堆栈段 DW 128 DUP(?) ;注意这里只有128个字节 STACKS ENDS DATAS SEGMENT ;数据段 ;请在这里定义您的数据 MOV AH, 2 MOV DL, '5' ; 需要将数值 5 转换为显示的字符 '5' 放在 DL 寄存器里 DATAS ENDS CODES SEGMENT ;代码段 ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS ;初始化 MOV DS,AX ;请在这里添加您的代码 INT 21H MOV AX,4C00H ;退出程序 INT 21H CODES ENDS END START
我这样改了但是还是不输出,我网上也找了不少代码一样不输出信息,这编译器是不是垃圾啊
作者: qscool1987 发布时间: 2011-11-29
Assembly code
STACKS SEGMENT STACK ;堆栈段 DW 128 DUP(?) ;注意这里只有128个字节 STACKS ENDS DATAS SEGMENT ;数据段 ;请在这里定义您的数据 DATAS ENDS CODES SEGMENT ;代码段 ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS ;初始化 MOV DS,AX ;请在这里添加您的代码 MOV AH, 2 MOV DL, '5' ; 需要将数值 5 转换为显示的字符 '5' 放在 DL 寄存器里 INT 21H MOV AX,4C00H ;退出程序 INT 21H CODES ENDS END START
作者: zara 发布时间: 2011-11-29
你把指令放在数据段里,还说编译器垃.圾?上面不是已经说明了的吗?!
Assembly code
STACKS SEGMENT STACK ;堆栈段
DW 128 DUP(?) ;注意这里只有128个字节
STACKS ENDS
DATAS SEGMENT ……
可这样还是没有啊,真崩溃啊,是不是我有些设置没搞好
作者: qscool1987 发布时间: 2011-11-29

是不是数码段要加数据呢????
我第一次摸汇编真不清楚
作者: qscool1987 发布时间: 2011-11-29
........
Assembly code
;这是自动生成的代码模板
STACKS SEGMENT STACK ;堆栈段
DW 128 DUP(?) ;注意这里只有128个字节
STACKS ENDS
DATAS SEGMENT ;数据段
;请……
你这个不是规范的汇编程序,所以显示不出来。
汇编语言有多个家族,每个家庭语法不尽相同,用的较多的是MASM,你要干哪怕再小的一件事,你也得把环境搭建好,然后才能编辑、编译、调试和运行程序,要不然,你是事倍功半,甚至难达目标。
-----------------
你在这里下载编译程序包:http://www.masm32.com/masmdl.htm
下载后,它是一个exe文件,你解压,它会提示,你就把它安装在c:\masm32目录下。
然后你用写字本(或者其他的纯文本编译器),编辑下面的代码,存放在:c:\masm32\bin 文件夹下,假设文件名是hi.asm (扩展名统一用.asm)
然后打开Windows控制台窗口,将当前文件夹切换到c:\masm32\bin
然后输入: ML /c hi.asm 回车
它会将你的hi.asm编译成hi.obj文件
然后你再输入:link16 /TINY hi.obj; 回车(分号不要省略)
你的程序就编译成功了,文件名是hi.com
你运行hi.com试试。(就在控制台窗口下输入 hi 运行)
;下面是程序全文:
Assembly code
code segment public assume cs:code,ds:code org 100h start: mov ax,cs mov ds,ax mov dx,offset msg1 mov ah,09h int 21h mov ax,4c00h int 21h msg1 db 'Hello World!',0dh,0ah,'$' code ends end start
作者: gsy999 发布时间: 2011-11-29
作者: zara 发布时间: 2011-11-29

我已经磨了三个小时,然后连一个例如hello world的程序都弄不出来,况且我还学过几年的C+,很难受啊
如此之难,打消我的积极性啊
作者: qscool1987 发布时间: 2011-11-29
我已经磨了三个小时,然后连一个例如hello world的程序都弄不出来,况且我还学过几年的C+,很难受啊
如此之难,打消我的积极性啊
怎么可能。你用的什么编译器 编译程序和链接程序在哪个目录下?你帖出来,我马上可以让你显示出Hello world
作者: gsy999 发布时间: 2011-11-29
作者: qscool1987 发布时间: 2011-11-29
我用的是轻松汇编,武汉大学那个教授发明的,我的编译链接都能通过,这么说我的目录应该没错,可是就是显示不了信息
你不能双击程序,要从控制台手工执行应用程序。
作者: gsy999 发布时间: 2011-11-29
引用 15 楼 qscool1987 的回复:
我用的是轻松汇编,武汉大学那个教授发明的,我的编译链接都能通过,这么说我的目录应该没错,可是就是显示不了信息
你不能双击程序,要从控制台手工执行应用程序。
我就是点的编译链接执行,然后看不到啊,难道说要从控制台,也就是cmd里面输入你说的那一串步骤吗???
作者: qscool1987 发布时间: 2011-11-29
作者: qscool1987 发布时间: 2011-11-29
引用 16 楼 gsy999 的回复:
引用 15 楼 qscool1987 的回复:
我用的是轻松汇编,武汉大学那个教授发明的,我的编译链接都能通过,这么说我的目录应该没错,可是就是显示不了信息
你不能双击程序,要从控制台手工执行应用程序。
我就是点的编译链接执行,然后看不到啊,难道说要从控制台,也就是cmd里面输入你说的那一串步骤吗???
控制台程序通常不能以Windows应用程序那样执行,你应该从控制台进去执行,像显示串什么的,都是输出到控制台的。不要用一个模式去解决所有的问题。
作者: gsy999 发布时间: 2011-11-29
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28