8086汇编习题笔记

Posted scrazy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8086汇编习题笔记相关的知识,希望对你有一定的参考价值。

1.若自STRING单元开始存放有一个字符串(以字符‘$’结束),请实现以下任务:

⑴ 编程统计该字符串长度(不包含字符‘$’,并假设长度为两字节)。

⑵ 把字符串长度放在STRING单元,把整个字符串往下移两个单元。

(1)

 1 DATA SEGMENT
 2     STRING DB HELLO ASM$
 3 DATA ENDS
 4 CODE SEGMENT 
 5     ASSUME CS:CODE,DS:DATA;不然会导致无效操作 
 6    ;LEN AX,STRING;为什么不行
 7    ;MOV AX   , OFFSET STRING 为毛也不行
 8    LEA SI, STRING
 9    ;这里如何获取内存的物理地址里的值
10    ;SI里保存偏移地址,为区分寄存器寻址需要使用中括号[],使用SI,DI,BX时候默认的段基地址为DS,使用BP(堆栈)时候,段基地址为SS
11 AGAIN:
12    MOV AL, [SI] ;这里AL里存放的是数值,不是地址,下一个字符只需要inc si即可       
13    INC SI
14    CMP AL,$
15    JNZ ACTION
16    JZ OUTPUT
17 ACTION:
18     INC DL
19     JMP AGAIN
20 OUTPUT: 
21     ;注意不能直接输出,记得先转ascll码
22     ADD DL,30H
23     MOV AH,02H
24     INT 21H
25 CODE ENDS

初始寄存器值:技术分享图片结束后:技术分享图片

 

以上是关于8086汇编习题笔记的主要内容,如果未能解决你的问题,请参考以下文章

8086汇编学习之代码段数据段栈段与段地址寄存器

汇编 学习笔记3 段寄存器 CS:IP

8086 DEBUG调试 学习笔记

汇编语言 王爽第三版学习笔记目录+习题解析+实验

汇编学习8086CPU-段地址-偏移地址简要理解

汇编-8086内部寄存器+对段寄存器使用的约定