. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->更灵活的定位内存地址的方法
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  -----------7.9------------有两种方式改变大写字母  [待解决] 回复[ 2次 ]   点击[ 531次 ]  
stop1204
[帖 主]   [ 发表时间:2013-05-05 10:16 ]   [引用]   [回复]   [ top ] 
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06
1.先把第一行前四个字母全改大写,再改第二行的四个字母,的源程序:

        assume cs:codesg,ss:stacksg,ds:datasg
        stacksg segment
                dw 0,0,0,0,0,0,0,0
        stacksg ends
        datasg segment
                db '1. display      '
                db '2. brows        '
                db '3. replace      '
                db '4. modify       '
        datasg ends
        codesg segment
        start:
                mov ax,stacksg
                mov ss,ax
                mov sp,16
                mov ax,datasg
                mov ds,ax
                mov cx,4
                mov bx,0
        s:        push cx
                mov cx,4
                mov si,0
        s0:        mov al,[bx+3+si]
                and al,11011111b
                mov [bx+3+si],al
                inc si                ;add si,10H  如果换成 add si,10H则下面的 add bx,10H要换成inc bx
                loop s0
                pop cx
                add bx,10H        ;inc bx        ;关键语句,如果少了这一句,将变成每个单词的第一个字母变大写
                loop s
                mov ax,4c00h
                int 21h
        codesg ends
        end start




2.先把单词每列的第一个字母先改成大写,再开始第二列的每个字母

        assume cs:codesg,ss:stacksg,ds:datasg
        stacksg segment
                dw 0,0,0,0,0,0,0,0
        stacksg ends
        datasg segment
                db '1. display      '
                db '2. brows        '
                db '3. replace      '
                db '4. modify       '
        datasg ends
        codesg segment
        start:
                mov ax,stacksg
                mov ss,ax
                mov sp,16
                mov ax,datasg
                mov ds,ax
                mov cx,4
                mov bx,0
        s:        push cx
                mov cx,4
                mov si,0
        s0:        mov al,[bx+3+si]
                and al,11011111b
                mov [bx+3+si],al
                add si,10H 
                loop s0
                pop cx
                inc bx        
                loop s
                mov ax,4c00h
                int 21h
        codesg ends
        end start



之前什么都没看 自己 编完了 看起来感觉不一样,然后就发现了
stop1204
[第1楼]   [ 回复时间:2013-05-05 10:18 ]   [引用]   [回复]   [ top ] 
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06
一晚上把第七章学完了-.-   今晚要进行第八章了,然后就去版块8区了,  7区我就不再来看了 ,
asm0101
[第2楼]   [ 回复时间:2015-04-04 00:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2015-02-17 23:21
7.9 再加一种方法。

assume   cs:codesg,ss:stacksg,ds:datasg
stacksg  segment
     dw  0,0,0,0,0,0,0,0
stacksg  ends
datasg   segment
     db  '1. display      '
     db  '2. brows        '
     db  '3. replace      '
     db  '4. modify       '
datasg   ends
codesg   segment

start:mov ax,datasg
      mov ds,ax
      mov bx,0
      mov dx,1101111111011111b
      mov cx,4
   s: and 3[bx],dx
      and 5[bx],dx
      add bx,10h
      loop s

      mov ax,4c00h
      int 21h
codesg   ends
end      start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved