. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->标志寄存器
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验11,这么简单,我都不好意思贴了!  [待解决] 回复[ 13次 ]   点击[ 874次 ]  
helonsy
[帖 主]   [ 发表时间: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
avalon
[第1楼]   [ 回复时间:2010-07-28 08:41 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:18
注册日期:2010-06-30 09:38
5分钟打这么多啊哈,您的打字速度好快呵呵
helonsy
[第2楼]   [ 回复时间:2010-07-28 09:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-11 16:57
5分钟打这么多啊哈,您的打字速度好快呵呵
------------------
回复:这个不算快吧?
jjch224
[第3楼]   [ 回复时间:2010-08-13 11:28 ]   [引用]   [回复]   [ top ] 
荣誉值:16
信誉值:0
注册日期:2010-07-09 09:48
有意识,楼主用'字符'的方式来定位小写字母,简洁明了。偶为了找小写字母的asc码还专门baidu了下。
al-man
[第4楼]   [ 回复时间:2010-11-03 22:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2010-04-16 17:32
回复:[第3楼]
------------------
恩,我也是。学习了
akiraakito
[第5楼]   [ 回复时间:2010-12-19 20:28 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2008-12-01 20:40
LZ还用JCXZ啊,呵呵,学了这章可以换用cmp je了
three-stone
[第6楼]   [ 回复时间:2010-12-26 02:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-21 15:56
我也是用的ascii码值来做的。
搞的还要查。
看来,有时候,思维定势了。
回复:[第3楼]
------------------
恩,我也是。学习了
------------------
回复:
fiu
[第7楼]   [ 回复时间:2010-12-29 14:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-17 16:28
letterc:        push ds;保存寄存器
=====================================
你的这个没有必要
huang2010
[第8楼]   [ 回复时间:2011-01-19 21:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-23 21:07
很烦这种人,卖口乖
aibvfhpia
[第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
1509341349
[第10楼]   [ 回复时间:2013-12-10 11:28 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-11-26 11:23
好贴!要顶
menghs_begin
[第11楼]   [ 回复时间:2018-08-05 16:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2018-07-30 20:26
在C语言中对比也都是这样.反正我是这样的.一开始不知道可不可以,然后就试了一下
menghs_begin
[第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
menghs_begin
[第13楼]   [ 回复时间:2018-08-05 16:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2018-07-30 20:26
回复:[第12楼]
------------------
多写了个ret  修改之后忘记删除了
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved