汇编复习(从键盘上输入10个字符并按顺序存放在存储单元中;然后按逆向顺序在显示器上输出(利用堆栈“先进后出”的特点来实现)
2019-01-04 20:49
288 查看
先上代码
SSEG SEGMENT PARA STACK'STACK' ;定义堆栈段 DW 256 DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,SS:SSEG START: MOV AX,SSEG ;将堆栈段的地址给SS MOV SS,AX MOV CX,10 ;设置循环次数 READ: MOV AH,01 ;01号中断,可以从键盘输入一个一个字符并存在AL中 INT 21H PUSH AX ;入栈,入栈的必须是字 LOOP READ ;循环READ MOV CX,10 ;重新设置循环次数 DISP: POP DX ;出栈,出栈的也必须是字 MOV AH,02H ;02号中断,输出DL一个字符 INT 21H LOOP DISP ;循环DISP 一次出栈 MOV AH,4CH INT 21H CSEG ENDS END START
需要时倒序输出,正好堆栈这种数据结构可以满足,因此我们只要将从键盘得到的数据一次入栈,然后出栈的时候因为从栈顶开始,此时设置好循环次数依次出栈并保存到DX直接输出就可以了
下面我们尝试用debug 来查看堆栈段的数据 是不是和我们输出的一致
特别说明一下如果程序里面输入的 按T进行单步执行的时候,遇到输出很自动跳出来,然后直接输入按回车就好了
我们先连续执行t 命令 输出两个参数(这里我输入R和W)
我们知道堆栈入栈SP会先减2 出栈则是先弹出SP再减2 因此堆栈段地址肯定和SP有关 so。。。。
-d ss:01f0
可以看到 R和W在01FE和01FC的位置上,中间有空时因为sp每次加减都是2
现在我们学一下 -a 命令
-a就是让我们可以在debug里面输入命令 这样我们不需要新建asm文件,方便我们做一些简单的小验证
输入-a 前面xxxx:xxxx是自动出现 我们在其后写指令就好,结束后连续两次回车即可退出
-u 077b:0000 (如果你是debug一个程序的时候输入-a就要在后面加上地址,不然出来的结果是所debug的那个程序的 而不是你-a之后的程序。-a之后第一排的数字便是地址)
-d 077b:0000(同上)
我们直接 输入debug然后-a 输入指令
-a xxxx:xxxx 后面可以接地址
相关文章推荐
- 汇编复习(从键盘上输入n个字符(n小于128)并按顺序存放在存储单元中,键入“Enter”键结束输入,然后按顺序在显示器上输出)
- 汇编复习(;从键盘上输入1个字符,并统计二进制表示下1的个数,并显示输出。)
- 汇编基础练习题13:在数据区定义一个字型变量a1,a1中有10个元素,利用7中的输入子程序输入10个整数,然后把这些整数依次存放到数据区的a1变量中。
- 利用指针实现将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中各单元的值。
- c语言: 键盘输入一个n个字符的串,然后按字母表顺序输出这n个字符
- 汇编语言: 试编制一个程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不 是,则退出程序;如是,则开始接收键入的字符并顺序存放在首地址为buffer的缓冲区中(空 格符不存入),直到接收
- 80x86汇编编程:把一串字符从键盘输入,然后逆序输出
- 从键盘输入10个字符串存放到一个二维数组中,求出其中最大者并输出
- 1.3编程实现从键盘依次输入姓名(字符串)、年龄(整型)、性别(字符)和成绩(浮点型),然后依次显示上述内容
- 将10个数输入,去掉重复的数,然后顺序输出
- 编程实现由键盘输入一个字符后,在屏幕上输出该字符
- 从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。
- 输入a,b,c三个整数,按由大到小顺序输出。(用3个指针变量指向3个整形变量,然后用swap函数来实现互换3个整型变量的值)
- 【c语言】从键盘输入BOY三个字符,然后把它们输出到屏幕
- (汇编复习)从键盘上输入两个一位十进制无符号数字符,并对其做加法,以十进制的形式输出结果
- 3. 定义10个字节的键盘缓冲区,然后键盘输入字符填满该缓冲区,做如下工作: (1)分别将输入键盘缓冲区的字符按数字,小写字母,大写字母,其他字符进行计数; 分别将这些计数值显示出来。 (2)分别将这
- 指针访问方式从键盘给数组 a[N]输入数据, 然后对元素值重新按逆序存放并输出
- c语言:从键盘输入BOY三个字符,然后把它们输出到屏幕。
- 61.从键盘输入10个正数存入数组x中,然后输入要查找的整数a,如找到则输出a及a的下标,如找不到,则把a存入到数组的最后。
- 从键盘上输入三个整数,分别赋给整型变量a,b,c. 然后将输入的整数按照从小到大的顺序放在a,b,c中, 并输出三个变量的值。