2 yeruo yeruo 于 2015.07.13 20:40 提问

mov di,16h 和mov di,16有什么不同吗?代码中有注释哪里有问题

DATA SEGMENT
STRG DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
DB 41H,42H,43H,44H,45H,46H
DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
DB 41H,42H,43H,44H,45H,46H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DI,16;*************************************这里如果改成16h结果又问题
XOR BX,BX
NEXT: LEA SI,STRG
ADD SI,BX
MOV CX,16
MOV AH,2
DISP: MOV DL,[SI]
INT 21H
MOV DL,' '
INT 21H
INC SI
LOOP DISP
MOV DL,0AH
INT 21H
MOV DL,0DH
INT 21H
INC BX
DEC DI
JNZ NEXT
MOV AH,4CH
INT 21H
CODE ENDS
END START

3个回答

a1193561652
a1193561652   Rxr 2015.07.13 21:27

回答这个?16h是16进制数,换成10进制为22。

a1193561652
a1193561652 回复yeruo: 16h表示22次,16才表示16次
大约 3 年之前 回复
yeruo
yeruo 回复纵横车: 恩恩 di是用来计数的。那个计数不是应该用16h减 然后减到00h就代表16次么。。为什么用十进制16来代表16次呢。就是这里有点不明白
大约 3 年之前 回复
a1193561652
a1193561652 那个di好像就是个计数的,并没有用它寻址。另外前面数据段里有两段一样的数据,感觉好浪费,可以改一下程序的逻辑,然后只使用一段数据。
大约 3 年之前 回复
bdmh
bdmh   Ds   Rxr 2015.07.13 21:38

进制不同,带h表示是16进制

Betterday
Betterday   2015.07.16 17:17

16 = 16;16H = 22

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
键盘I/O中断调用(INT 16H)
转自https://zhidao.baidu.com/question/233998859.html 键盘I/O中断调用有三个功能,功能号为0, 1, 2,且必须把功能号放在AH中。 (1)0号功能调用 格式:MOV AH, 0 INT 16H 功能:从键盘读入字符送AL寄存器。执行时,等待键盘输入,一旦输入,字符的ASCII码放入AL中。若AL=0,则AH为输入的扩展码。
王爽《汇编语言》17章 乱记
CODES SEGMENT ASSUME CS:CODESSTART: MOV AH,0 INT 16H ;读取键盘缓冲区的数据 MOV AH,1 ;这边是设置初始颜色为蓝色的吧 CMP AL,r JE RED CMP AL,g JE GREEN CMP AL,b JE BLUE JMP SHORT SRET RE
MOV AX ,OFFSET[DI+10H]的错误
MOV AX ,OFFSET[DI+10H]的错误 记录一下这条语句的错误。(百度查的) offset 是取偏移地址的 比如说: s: mov ax,cx mov bx,offset s 这里就可以用offset,看见s了吗,后面有个标号,这叫做地址标号 另外还有一种数据标号 比如说: data segment a db 128 dup (?) data ends co
不同的寻址方式灵活运用(di,si)
si和di是8086cpu中和必须功能最相近的寄存器,si和di不能给凤城二个8位寄存器来使用。下面3组指令实现了相同的功能。 1:  mov bx,0 mov ax,[bx]   ;ax=16*ds+bx 2: mov si,0 mov ax,[si]    ;ax=16*ds+si 3: mov di,0 mov ax,[di] ;ax=16*ds+di 4: mov b
汇编语言-----字符串的输入利用int 16h读取键盘缓冲区
学到这里,已经感觉有点跟不上王爽老师的步伐了,因为有些
SI和DI寄存器的用途
SI是源变址寄存器,DI是目的变址寄存器。可以用来存放数据、地址,功能类似、用法类似、一般使用哪个都可以。 但需要注意的是:在串处理指令中,SI用作隐含的源串地址,默认在DS中;DI用做隐含的目的串地址,默认在ES中;此时不能混用。 BP: 是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到比如说,堆栈中压入了很多数据或者地址,你肯定想通
①mov ax,1 ②mov ds,ax ③mov bx,[0] 通过上面这些语句,为什么ds=0000?
①mov ax,1 ②mov ds,ax ③mov bx,[0] 通过上面这些语句,为什么③mov 指向bx,0000:0010 不是段地址*16+偏移地址吗?不是应该指向0010:0000吗?为什么DS不是1? -d 0000:0 1f 0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60 p..0.`0.....f "
汇编语言之寄存器使用(bx,si,di,bp)
转载:http://www.cnblogs.com/huzhongzhong/archive/2011/08/01/2123743.html 这里对这几个寄存器总结一下。 通用寄存器的主要用途 寄存器的分类 寄存器 主 要 用 途 通 用 寄 存 器 数据   寄存器 AX
实验13.2
(2)编写,编译,并运行myloop.exe assume cs:code code segment      start:      mov ax , cs      mov ds , ax      mov si , offset myloop      mov ax , 0      mov es , ax      mov di , 200h  
第13章 int指令
1. assume cs:code code segment start: mov ax,cs  mov ds,ax  mov si,offset show  mov ax,0  mov es,ax  mov di,200h  mov cx,offset showe-offset show  cld  rep movsb  mov ax,0  mov es,ax  mo