|
主题 : : 实验11,这么简单,我都不好意思贴了! [待解决] |
回复[ 13次 ]
点击[ 874次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-07-27 22:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-11 16:57 |
太简单了,我只用了5分钟就搞定了,如果您觉得有用,请回帖,您的回帖将是对我最大的支持。
assume cs:codesg
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
begin: mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
;功能:将以0结尾的字符串中的小写字母转变成大写字母
;参数:ds:si指向字符串的首地址
;返回:无
letterc: push ds;保存寄存器
push si
push cx
s0: mov cl,[si]
mov ch,0
jcxz endup
cmp cl,'a'
jb s1
cmp cl,'z'
ja s1
and cl,11011111b
mov [si],cl
inc si
jmp s0
s1: inc si
jmp s0
endup: pop cx
pop si
pop ds
ret
codesg ends
end begin | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-07-28 08:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:18
注册日期:2010-06-30 09:38 |
|
|
|
|
|
[第2楼]
[ 回复时间:2010-07-28 09:00 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-11 16:57 |
5分钟打这么多啊哈,您的打字速度好快呵呵
------------------
回复:这个不算快吧? | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-08-13 11:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:16
信誉值:0
注册日期:2010-07-09 09:48 |
有意识,楼主用'字符'的方式来定位小写字母,简洁明了。偶为了找小写字母的asc码还专门baidu了下。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-11-03 22:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2010-04-16 17:32 |
回复:[第3楼]
------------------
恩,我也是。学习了 | | |
|
|
|
|
[第5楼]
[ 回复时间:2010-12-19 20:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2008-12-01 20:40 |
LZ还用JCXZ啊,呵呵,学了这章可以换用cmp je了 | | |
|
|
|
|
[第6楼]
[ 回复时间:2010-12-26 02:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-10-21 15:56 |
我也是用的ascii码值来做的。
搞的还要查。
看来,有时候,思维定势了。
回复:[第3楼]
------------------
恩,我也是。学习了
------------------
回复: | | |
|
|
|
|
[第7楼]
[ 回复时间:2010-12-29 14:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-17 16:28 |
letterc: push ds;保存寄存器
=====================================
你的这个没有必要 | | |
|
|
|
|
[第8楼]
[ 回复时间:2011-01-19 21:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-23 21:07 |
|
|
|
|
|
[第9楼]
[ 回复时间:2011-01-30 23:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-20 11:44 |
我也做了一个。。
DATA SEGMENT
DB "BEGINNER's All-purpose Symbolic Instruction Code.",0
DATA ENDS
ASSUME CS:CODE,DS:DATA
CODE SEGMENT
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV SI,0
MOV DI,0
S: MOV CL,[SI]
MOV CH,0
JCXZ OK
CMP BYTE PTR [SI],61H
JB CHAGES
CMP BYTE PTR [SI],7AH
JA CHAGES
SUB BYTE PTR [SI],20H
CHAGES: CLD
MOVSB
LOOP S
OK: MOV AX,4C00H
INT 21H
CODE ENDS
END START | | |
|
|
|
|
[第10楼]
[ 回复时间:2013-12-10 11:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-11-26 11:23 |
|
|
|
|
|
[第11楼]
[ 回复时间:2018-08-05 16:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2018-07-30 20:26 |
在C语言中对比也都是这样.反正我是这样的.一开始不知道可不可以,然后就试了一下 | | |
|
|
|
|
[第12楼]
[ 回复时间:2018-08-05 16:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2018-07-30 20:26 |
我也写了一下...搞不明白楼主为什么要push ds之类的呢...
;将以0结尾的字符串中的小写字母转变成大写字母
assume cs:code
data segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
data ends
code segment
begin: mov ax,data
mov ds,ax
mov si,0
call letterc
mov ax,4c00H
int 21H
letterc: mov cl,[si]
mov ch,0
cmp byte ptr [si],'a'
jb next
cmp byte ptr [si],'z'
ja next
jcxz rt
je rt
and byte ptr [si],11011111B
next: inc si
jmp short letterc
rt: ret
code ends
end begin | | |
|
|
|
|
[第13楼]
[ 回复时间:2018-08-05 16:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2018-07-30 20:26 |
回复:[第12楼]
------------------
多写了个ret 修改之后忘记删除了 | | |