汇编语言 如何从一个定义的db变量中取出第x个字符?以下是程序代码,运行后显示结果是乱码。

DATA SEGMENT
KEYIN DB '1234'
DATA ENDS

STACK SEGMENT
DB 100 DUP(?)
STACK ENDS

CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,100
;初始化

MOV SI,3
MOV DX,OFFSET KEYIN[SI]
MOV AH,9H
INT 21H
;输出第三个自符

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

只输出一个字符不要用9号功能,用2号功能即可追问

1楼你好。是将mov ah,9h,改为:mov ah,2h 吗?输出结果和9h一样,都是一堆乱码。貌似是第三个字符的地址写错了的原因。
继续求教

追答

不是这么简单啦,整个调用过程都要改成是2号功能的规则,把第三个字符直接送DL

温馨提示:内容为网友见解,仅供参考
无其他回答

汇编语言程序设计 从字符串中截取指定长度的字符
INFO4DB 0AH,0DH,'input error!','$'DATAENDS STACKSEGMENT STACK DB 200 DUP(0)STACKENDS CODESEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX ;LEA DX,INFO1 MOV AH,09H INT 21H LEA DX,MAXLEN MOV AH,0AH;输入字符串 INT 21H LEA DX,INFO2 MOV AH,09H...

求汇编语言代码!在一个字符串中查找某个字符第一次出现的位置
0 ; 以0结尾的字符串,即类似c语言的字符串 CHAR1 DB 'X' DATA ENDS CODE SEGMENT ASSUME CS:CODE START: MOV AX,SEG DATA MOV DS,AX MOV ES,AX LEA DI,STR1 MOV AL,BYTE PTR DS:...

用汇编语言试编写程序,从键盘输入字符以回车结束,统计输入的字符个数...
MOV DS, AX MOV DX, OFFSET MSG1 ;提示输入. MOV AH, 09H INT 21H MOV DX, OFFSET IN_1 ;接收键盘输入. MOV AH, 0AH INT 21H MOV DX, OFFSET CRLF ;回车换行. MOV AH, 09H INT 21H MOV DX, OFFSET BUFF ;输出原字符串. MOV AH, 09H INT 21H MOV DX, OFFSET MSG2 ;提示长度. MOV AH...

用汇编语言编一个程序
代码如下:; 显示三角形data SEGMENT ORG 100H STAR DB '* ', '$' SPACE DB ' ', '$' ;空格 LINE DB 0DH, 0AH, '$' ;换行data ENDSstack SEGMENT PARA STACK DW 256 DUP(?)stack ENDScode SEGMENT ASSUME CS: code, DS: dataBEGIN: M...

汇编语言 db为什么后面可以加两个量,详见问题补充
如果你程序中这样用数据:MOV AL, XY MOV AH, XY+1 结果AX的内容变成4305H 与用指令 MOV AX, XZ 的结果也是一模一样。在汇编语言中,并不需要为每个数据存储单元定义一个名字。数据是可以直接按地址访问的。实际上,经汇编程序翻译以后,和变量名就变成了直接按地址访问。机器指令也只能按...

怎么用汇编语言编写一个程序,统计字符串的长度并输出
MSG1 DB 'LENGTH:','$'SHEX DB '0123456789ABCDEF$'MAXLEN EQU 200H DATA ENDS CODE SEGMENT ;代码段定义 assume CS:CODE,DS:DATA START:mov ax,DATA mov ds,ax ;初始化需要的寄存器 mov ax,0 mov bl,24H mov di, offset MSG1 ;循环比较字符串中的每个字符,并把统计值放在AX中...

汇编语言问题 这个BUF DB, 'ABCDE' COUNT EQU $-BUF 这个句子中$-BUF...
BUF DB, 'ABCDE' COUNT EQU $-BUF 这个句子中$-BUF 中间的 - 是减号EQU是一条等价伪指令 表示COUNT等价于$-BUF 表示定义完BUF DB, 'ABCDE' 之后的存储器单元地址减去变量 BUF的地址 $-BUF=5 也即COUNT=5 呵呵 满意 就选满意回答 本回答由提问者推荐 举报| 答案纠错 | 评论 20 6 胖大海君 采纳...

汇编语言 输入字符串,不知道字符个数所以定义了DB ?,但后来直接把?mov...
在汇编语言中,使用DB(Define Byte)指令来为一个或多个字节的数据分配内存空间,该指令后面紧跟着的是需要存储的字节数据。在输入字符串时,可以使用DB指令来定义一个字符数组,并在程序中循环读取输入字符,直到读到回车符为止。当需要遍历字符串时,可以使用MOV指令将字符数组的起始地址存储到CL寄存器中...

汇编语言中 从屏幕上输出一个字符
1、打开软件,出现下图的界面,可以直接进行编程。2、汇编语言的数据需要存放在特定的数据端位置。如字符串“hello world!”,db代表的是一个字节(8位数据位)。3、$ 表示一个字符串的结束,字符串要用单引号括起来。在代码中相应位置输入如图中的代码。4、在中间代码编写区域输入下图中相应的代码,...

汇编语言编写程序代码的三个级别不包括哪个?
汇编语言编写程序代码的三个级别不包括代码汇编语言编程完成,并要用masm运行正确。题目为:从键盘输入若干个整...答:家里电脑有这样的代码但是你中午之前要肯定不行了我这里有给定数字的计算正负个数的。你添加个手动输入数值的功能就可以实现你的要求datasegmentMSGDB20,-3,0,-59,60,-46,-7;...

相似回答
大家正在搜