回 帖 发 新 帖 刷新版面

主题:[转帖]Help  下个星期要上机的啊。5555


   题目不是很难,请各位高手帮帮忙,我下周要上机。可是还是不知道怎么做,

题目:指出指定内存单元中存放的字符串“大写字母”,“小写字母”结果放在指定

内存,并将结果在计算机显示!

谢谢了。。。 
  [em10][color=008000][/color]

回复列表 (共12个回复)

沙发

.model small
         .data

source   db 'sklDFerSDFer'
upper    db 13, 10, upper-source+1 dup('$')
lower    db 13, 10, upper-source+1 dup('$')

         .code
start:   mov ax, DGROUP
         mov ds, ax
         xor si, si
         xor di, di
         xor bx, bx
         mov cx, upper-source
cycle:   mov al, source[bx]
         cmp al, 'A'
         jb short cntnue
         cmp al, 'z'
         ja short cntnue
         cmp al, 'Z'
         ja short lwer
         mov upper[si+2], al
         inc si
         jmp short cntnue
lwer:    cmp al, 'a'
         jb short cntnue
         mov lower[di+2], al
         inc di
cntnue:  inc bx
         loop cycle
         mov ah, 9
         mov dx, offset DGROUP: upper
         int 21h
         mov ah, 9
         mov dx, offset DGROUP: lower
         int 21h
         mov ax, 4c00h
         int 21h
         end start

板凳

谢谢你,不过我有些地方感觉看的不是很懂啊,对着书看很久了。

可以在每行后面帮我加下注释吗?我知道这样要求很过了,谢谢啊。。

我还是菜鸟!

3 楼

我边看书边琢磨,改了后代码是这样的,可是编译出错了好多,不知道怎么改,

大哥再帮忙下哈!
    DATA    SEGMENT
    SOURCE    DB    'SKLDFERSDFER'
    UPPER    DB    13,10,UPPER-SOURCE+1    DUP('$')
    LOWER    DB    13,10,UPPER-SOURCE+1    DUP('$')
    DATA    ENDS
    CODE    SEGMENT
SSUME    CS:    CODE,DS:dATA
START:    MOV    AX,DATA
    MOV    DS,AX
    XOR    SI,SI
    XOR    DI,DI
    XOR    BX,BX
    MOV    CX,UPPER-SOURCE
CYCLE:    MOV    AL,SOURCE[BX]
    CMP    AL,'A'
    JB    SHORT    CNTNUE
    CMP    AL,'Z'
    JA    SHORT    CNTNUE
    CMP    AL,'Z'
    JA    SHORT    LWER
    MOV    UPPER[SI+2],AL
    INC    SI
    JMP    SHORT    CNTNUE
LWER:    CMP    AL,'A'
    JB    SHORT    CNTNUE
    MOV    LOWER[DI+2],AL
    INC    DI
CNTNUE:    INC    BX
    LOOP    CYCLE
    MOV    AH,9
MOV    DX,OFFSET    DGROUP:    UPPER
    INT    21H
    MOV    AH,9
MOV    DX,OFFSET    DGROUP:    LOWER
    INT    21H
    MOV    AX,4C00H
    INT    21H
    CODE    ENDS
    END    START
    END

4 楼

用完整段定义时,不存在DGROUP默认组,因此offset DGROUP: 改为offset。

除非你先定义

DGROUP group DATA

5 楼

直接去掉就可以了?

6 楼

如果编一个宏来指示输出的话。怎么加呢?
上面的代码考虑到空格的情况了吗?

ccrf macro

     mov Ah  2h
     mov Dl  0dh
     INT 21H
     MOV AH 02H
     MOV DL 0AH
     INT 21H
END  M

7 楼

我怎么老编译不过去。好象都是cs错误的

8 楼

两个操作数之间都没有逗号,怎会编译得过去。

还有endm不能写为end m。

9 楼

UPPER    DB    13,10,UPPER-SOURCE+1    DUP('$')
    LOWER    DB    13,10,UPPER-SOURCE+1    DUP('$')
这段是什么意思呢?13,10?

还有pper 是会直接指向字符串下标的最高位吗?

10 楼

13、10是回车换行,不加上这两个,显示的时候就会连在一行上了。upper是那段空间的首地址。

我来回复

您尚未登录,请登录后再回复。点此登录或注册