具体要求是:
1.先输出一个字符串
2.然后反向将此字符串输出(如student,反向后为tneduts)
大致思路是将单词读入后,存放在一个堆栈中,记得保留地址,然后反向pop,就ok
一:
_TEXT segment word public 'CODE'
assume cs:_TEXT,ds:_DATA,ss:_STACK
addem proc far
mov ax,_DATA
mov ds,ax
mov ax,a
mov ax,b
mov c,ax
mov ax,4c00h
int 21h
addem endp
_TEXT ends
_DATA segment word public 'DATA'
a dw 3
b dw 4
c dw ?
_DATA ends
_STACK segment para stack 'STACK'
db 128 dup(?)
_STACK ends
end addem
二:
data segment
user_string db 100,0,10 dup(?)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax ;把数据段寄存器赋值给ds
lea dx,user_string ;建立输入字符串缓冲区
mov ah,0Ah ;
int 21h ;ah=0aH 请求键盘输入到缓冲区中断
xor si,si ;si清零
xor bx,bx ;bx清零
mov bx,dx ;把缓冲区的地址给bx
mov cx,[bx+si+1] ;看这个就是"寄存器间接寻址方式"
xor ch,ch ;其目的就是取实际输入字符个数
mov di,cx
lop: mov ah,2;ah=2H 请求输出dl中的值
mov dl,[bx+di+1];看这又是"寄存器间接寻址方式"
int 21h ;其目的就是取输入字符串的最后一个字符
dec di
loop lop ;依次循环倒着输出字符 loop循环又cx控制循环次数;
mov ah,4ch ;ah=4cH 带返回码结束 返回码存放在al中
int 21h
code ends
end start
阅读(1245) | 评论(0) | 转发(0) |