一道汇编题目不会做 请教高手

hongke212 2003-10-31 09:05:40
最近遇到一道题目不会做 请高手给出代码
题目:从键盘输入一个字符串(不超过255个)将其中的小写字母转换为大写的字母
然后按照原来的顺序在屏幕上显示
我用的是MASM6.11的工具来编程的
我知道要用到 比较cmp 要用到DOS的功能调用int 21 输入字符串ah=09h
输出字符串 ah=0ah
应该还要用堆栈
但是没有一点思绪
请高手指教啊
...全文
60 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongke212 2003-11-10
  • 打赏
  • 举报
回复
谢谢各位
我想问 在debug下怎么看在masm编的程序啊
hh4715 2003-11-02
  • 打赏
  • 举报
回复
;****************************************
datarea segment
array db 0,256 dup(?)
datarea ends
;*****************************************
programe segment
assume cs:programe,ds:datarea
;-------------------------------------------
main proc far
start:
;set up stack for returns
push ds ;save old data segment
sub ax,ax ;put zero in AX
push ax ;save it on stack
;set DS register to current data segment
mov ax,datarea
mov ds,ax
mov si,1
mov cx,0
;MAIN PART OF PROGRAM GOES HERE
call InputToUpper
call output
ret
main endp ;end of main part of programe
;--------------------------------------------
InputToUpper proc near
INToUpper:
mov ah,01
int 21h
cmp al,'A'
jl input_exit
cmp al,'z'
jg input_exit
cmp al,'a'
jge ToUpper
mov array[si],al
inc si
jmp INToUpper
input_exit:
ret
ToUpper:
sub al,32
mov array[si],al
inc si
jmp INToUpper
InputToUpper endp
;----------------------------------------------
output proc near
mov bx,1

rotate:
cmp bx,si
jg exit
mov dl,array[bx]
inc bx
mov ah,2
int 21h
jmp rotate
exit:
ret
output endp
;----------------------------------------------
programe ends ;end of code segment
;********************************************
end start ;end of assembly
rorot 2003-11-01
  • 打赏
  • 举报
回复
.model small
.data
;------------------------------------------------
prompt db 'Input your words please..?','$'
parlist label byte
maxnlen db 255
actulen db ?
kbword db 255 dup(' ')
.code
.386
;------------------------------------------------
a10main proc near
mov ax, @data
mov ds, ax
a10:
call c10clear ;清屏
mov dx, 080fh ;光标点
call c20cursor ;请求设置光标
call b10input ;显示提示

cmp actulen, 00 ;是否有输入呢?
je a10 ;没有?重新返回输入状态

call b20aschange ;开始转换
call c10clear ;清屏
mov dx, 040fh ;设置光标
call c20cursor ;请求设置光标

lea dx, kbword ;装载改变后的字符
call d10display ;显示字符串
a20:
mov ax, 4c00h
int 21h
a10main endp
;------------------------------------------------
b10input proc near
pusha
lea dx, prompt
call d10display ;显示提示符

mov ah, 0ah
lea dx, parlist
int 21h

popa
ret
b10input endp
;------------------------------------------------
b20aschange proc near
pusha
mov al, actulen
xor ah, ah
mov si, ax
mov kbword[si], '$' ;把原来输入中的回车换成'$'
b10:
mov al, kbword[si-1]
cmp al, 'a' ;与'a'比较
jb next ;比'a'小则跳转
cmp al, 'z'
ja next ;比'z'大则跳转
sub al, 20h ;向大写转换
mov kbword[si-1], al ;把改变写回到原来的字符串
next:
dec si
cmp si, 0
jne b10

popa
ret
b20aschange endp
;------------------------------------------------


;------------------------------------------------
c10clear proc near
pusha
mov ax, 0600h ;滚屏
mov bh, 71 ;设置背景
mov cx, 0000 ;左上角
mov dx, 184fh ;右下角
int 10h
popa
ret
c10clear endp
;------------------------------------------------
c20cursor proc near
pusha
mov ah, 02h ;请求设置光标
mov bh, 00 ;页码0
int 10h
popa
ret
c20cursor endp
;------------------------------------------------
d10display proc near ;调用来显示字符串
push ax
mov ah, 09h
int 21h
pop ax
ret
d10display endp
;------------------------------------------------
end a10main
romyks 2003-10-31
  • 打赏
  • 举报
回复
这个不难啊,不要用输入AH9中断,这样不大好控制,你就一个一个字符输入->判断->转换->存放->最后显示就可以了,
hongke212 2003-10-31
  • 打赏
  • 举报
回复
谢谢啊
虽然我看了一些还是没有看懂
可能是还没有仔细看完

xixicn 2003-10-31
  • 打赏
  • 举报
回复
用INT 21h的0AHh号功能,可以防止溢出,
csdsjkk 2003-10-31
  • 打赏
  • 举报
回复
cseg segment
assume cs:cseg,ds:cseg
org 100h
start:
jmp begin

buf db 255,?,255 dup (?)


begin:
push cs
pop ds
mov dx,offset buf
mov ah,0ah
int 21h
mov si,dx
add si,2
mov cl,buf + 1
mov ch,0
jcxz l2
cont:
mov al,[si]
cmp al,'a'
jb l1
cmp al,'z'
ja l1
sub byte ptr [si],20h
l1:
inc si
loop cont
l2:
mov byte ptr [si],24h
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
mov dx,offset buf + 2
mov ah,9
int 21h

mov ax,4c00h
int 21h
cseg ends
end start

21,499

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧