汇编程序问题求助。。。

2024-12-18 14:23:21
推荐回答(3个)
回答1:

懒啊,我也一样,帮你吧。对错我不能保证啊,但是应该不错……很多!!^_^玩笑

开始了::
1.
data segment
input db 'please input the word:',0ah,0dh,'$'
buffer db 60d dup(?)
db 0
db 61d dup(?);因为最后一个一定是enter键ASCII码
data ends
stack1 segment stack
db 200h dup(?)
stack1 ends
code segment
assume cs:code,ss:stack,ds:data
start: mov ax,data
mov ds,ax
mov ah,oah ;字符串输入
int 21h
mov si,01h
mov buffer[si],'$';调用09功能必须以$结束显示
mov ax,offset buffer
add ax,60d
mov dx,ax ;送偏移量
mov ah,09h
int 21h
mov ah,4ch
int 21h
code ends
end start

2.
data segment
buffer db ?
db D,K,G,D,S,H,G,D,H,,G,L,D,G,K,H,J,D
db X,K,J,G,,J,D,L,S,K,J,S,D,H
len equ $-buffer
data ends
stack1 segment stack
db 200h dup(?)
stack1 ends
code segment
assume cs:code,ss:stack,ds:data
start: mov ax,data
mov ds,ax
mov al,len
dec al
mov buffer,al ;装数据的长度
mov al,'J' ;需要删除的字符为J,可根据情况改
mov si,01h
mov cl,len
dec cl ;置循环次数
lp1: mov dl,buffer[si]
cmp dl,al
icn si
jnz lp1
mov buffer[si],? ;将符合的字符全部删除,存入符号‘ ?’
loop lp1 ;此句不要则只会删除第一个符合的字符,相应的置循环数的句子也可以不要了.
code ends
end start

回答2:

上面的程序似乎有问题,两个汇编时都会报错
下面是我提供的第一道题的程序,已经调试过了,没有问题,不超过70的字符串就好,第二道,明天再编

DATA SEGMENT
ARR DB 70
DB ?
DB 70 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET ARR
MOV AH,0AH
INT 21H
MOV BX,DX
MOV CL,[BX+1]
MOV DH,CL
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
L1: INC BX
LOOP L1

L2: MOV DL,[BX+1]
MOV AH,2
INT 21H
DEC BX
DEC DH
JNZ L2

MOV AH,4CH
INT 21H
CODE ENDS
END START

回答3:

鄙视懒虫。怎么现在的学生一点儿学养都没有,老师喜欢抄作业。