注册 登录
编程论坛 汇编论坛

输出显示的问题~

senyee 发布于 2006-12-07 23:05, 1297 次点击
键盘输入同学名字 se
当按下任意键时 显示“welcome se”

帮帮忙啊~~在这
谢谢了~~
19 回复
#2
菜鸟上路2006-12-08 08:53
这个应该很简单的
21号中断10号功能输入字符串,21号中断9号功能输出字符串
#3
senyee2006-12-08 13:14
关键是按下任意键
它就显示.....
就是这点没想明白.....
#4
菜鸟上路2006-12-08 17:13
可以加个判断
#5
菜鸟上路2006-12-08 17:14
在ASCII之内的按键全算
#6
曾小2006-12-08 20:52
你不能写个程序段吗?
这样......
#7
senyee2006-12-08 21:20

哎~~
就是不知道怎么写啊~~
那位帮下忙啊~~
能写下代码吗?

#8
senyee2006-12-08 21:23
dSEG SEGMENT
su1 db 'Welcome'
var db 20
db ?
db 20 dup(?)
dseg ends
cseg SEGMENT
assume cs:cseg,ds:dseg,es:dseg
bg: mov ax,dseg
mov ds,ax
mov es,ax
lea dx,var
mov ah,0ah
int 21h
lea di,su1
mov ah,9
int 21h
lea di,var
mov ah,9 //加了这段 ,输出就回产生乱码~~
int 21h

mov ah,4ch
int 21h //还没有按任意键在输出的功能.....
cseg ends
end bg
#9
菜鸟上路2006-12-08 22:56

.model small
.386
option casemap:none

data segment
hint db 0ah,0dh,'Please input name:','$'
wel db 0ah,0dh,'welcome se','$'
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax

mov dx,offset hint
mov ah,09h
int 21h

xor al,al
mov ah,01h
int 21h
cmp al,'s'
jz next1
jmp exit
next1:
xor al,al
mov ah,01h
int 21h
cmp al,'e'
jz next2
jmp exit
next2:
xor al,al
mov ah,01h
int 21h
mov dx,offset wel
mov ah,09h
int 21h

exit:
mov ax,4c00h
int 21h
code ends
end start

#10
senyee2006-12-08 23:08

谢谢~~

不过我要求 输入的姓名不一定
比如: 输入 senyee 回车
敲任意键
输出 Welcome senyee
就这样~
真是感谢你们
我刚学~~
多谢大家帮忙.....

#11
菜鸟上路2006-12-08 23:18
以下是引用senyee在2006-12-8 23:08:06的发言:

谢谢~~

不过我要求 输入的姓名不一定
比如: 输入 senyee 回车
敲任意键
输出 Welcome senyee
就这样~
真是感谢你们
我刚学~~
多谢大家帮忙.....

可以加个循环

#12
senyee2006-12-08 23:30
dSEG SEGMENT
d1 db 'Welcome','$'
var db 20
db ?
db 20 dup(?)
dseg ends
cseg SEGMENT
assume cs:cseg,ds:dseg,es:dseg
bg: mov ax,dseg
mov ds,ax
mov es,ax
lea dx,var
mov ah,0ah
int 21h
lea di,d1
MOV AH,9
INT 21H
mov ah,4ch
int 21h
dis proc near
mov ah,02h
int 21h
ret
dis endp
cseg ends
end bg

为什么输出是乱码?

循环......?
说具体点吧~~
很笨是不~~
这是第一次汇编编程
不是很清楚
能在改进下你的代码吗?
麻烦咯
#13
3037709572006-12-10 19:16
以下是引用senyee在2006-12-8 23:30:10的发言:
dSEG SEGMENT
d1 db 'Welcome','$' ;我觉得你把这句改为:d1 db 'Welcome$'
;就可以了,因为要输出的字符串必须以$结束,而$本身不会在屏幕上显示的

;要不然的话会输出乱码的.我只知道这些了,希望对你有帮助.
var db 20
db ?
db 20 dup(?)
dseg ends
cseg SEGMENT
assume cs:cseg,ds:dseg,es:dseg
bg: mov ax,dseg
mov ds,ax
mov es,ax
lea dx,var
mov ah,0ah
int 21h
lea di,d1
MOV AH,9
INT 21H
mov ah,4ch
int 21h
dis proc near
mov ah,02h
int 21h
ret
dis endp
cseg ends
end bg

为什么输出是乱码?

循环......?
说具体点吧~~
很笨是不~~
这是第一次汇编编程
不是很清楚
能在改进下你的代码吗?
麻烦咯

#14
菜鸟上路2006-12-10 20:21
以下是引用303770957在2006-12-10 19:16:01的发言:

不知道为什么要在定义前加个':',以前好象没看过这样的定义,能解释下吗?

#15
3037709572006-12-13 15:14
以下是引用菜鸟上路在2006-12-10 20:21:16的发言:

不知道为什么要在定义前加个':',以前好象没看过这样的定义,能解释下吗?

不知道你说的是在哪里加个':'我没有发现啊.能不能提示我一下?
#16
菜鸟上路2006-12-13 15:19
以下是引用303770957在2006-12-13 15:14:45的发言:
以下是引用菜鸟上路在2006-12-10 20:21:16的发言:

不知道为什么要在定义前加个':',以前好象没看过这样的定义,能解释下吗?

不知道你说的是在哪里加个':'我没有发现啊.能不能提示我一下?

你在13楼的引用中的红字

#17
3037709572006-12-14 10:28
哦,你是说的那个分号,那不是程序的一部分啊,那是汉语中的表达方式,我想你是误会了,呵呵!
#18
菜鸟上路2006-12-14 11:46
我觉得你把这句改为:d1 db 'Welcome$'
#19
senyee2006-12-14 21:43
我这样编了个~但不正确........
d segment
db11 db 'welcome '
db22 db 10 dup(?)
db00 db 'enter your name:'
db33 db 10
db ?
db 10 dup(?)
d ends
c segment
assume cs:c,ds:d
bg: mov ax,d
mov ds,ax
lea dx,db00
xor ax,ax
mov ah,9
int 21h
//运行到这就就跳到last 去了??-
ag: lea dx,db33 |
mov ah,0ah |
int 21h |
mov ah,1 |
int 21h |
mov si,0 |
mov di,0
re: mov al,db33[si+2]
cmp al,0 //问题在哪儿?
jbe last
xchg al,db22[di]
inc di
inc si
jmp re |
last: mov ah,4ch <-- ----
int 21h
c ends
end bg


#20
菜鸟上路2006-12-15 12:49
以下是引用senyee在2006-12-14 21:43:04的发言:
我这样编了个~但不正确........
d segment
db11 db 'welcome '
db22 db 10 dup(?)
db00 db 'enter your name:'
db33 db 10
db ?
db 10 dup(?)
d ends
c segment
assume cs:c,ds:d
bg: mov ax,d
mov ds,ax
lea dx,db00
xor ax,ax
mov ah,9
int 21h
//运行到这就就跳到last 去了??-
ag: lea dx,db33 |
mov ah,0ah |
int 21h |
mov ah,1 |
int 21h |
mov si,0 |
mov di,0
re: mov al,db33[si+2]
cmp al,0 //问题在哪儿?
jbe last
xchg al,db22[di]
inc di
inc si
jmp re |
last: mov ah,4ch <-- ----
int 21h
c ends
end bg


不懂这个意思,写下注释吧

1