8086汇编如何打印寄存器内数值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8086汇编如何打印寄存器内数值相关的知识,希望对你有一定的参考价值。
比如我ax中的数值为1024,如何将它打印在屏幕上啊
代码如下:CODES SEGMENT
ASSUME CS:CODES,DS:CODES
START: MOV AX,CODES
MOV DS,AX
MOV SI,offset X
xor dx,dx
MOV AX,65535 ;可以是0~65535之间任意数值
mov bx,ax ;被除数备份
MOV CX,5 ;循环5次
l1:div word ptr [SI] ;字除
push dx ;余数压栈
CMP CX,1
JZ l2 ;被除数为0时确保有输出
cmp dx,bx
jz skip ;不输出前面的0
l2: mov dl,al
OR DL,30H
mov ah,02h
int 21h ;输出
skip: pop ax ;余数出栈
xor dx,dx
add SI,2
LOOP l1
MOV AH,0
INT 16H
MOV AX,4C00H
INT 21H
X DW 10000,1000,100,10,1
CODES ENDS
END START 参考技术A CODES SEGMENT
ASSUME CS:CODES,DS:CODES
START: MOV AX,CODES
MOV DS,AX
MOV SI,offset X
xor dx,dx
MOV AX,65535 ;可以是0~65535之间任意数值
mov bx,ax ;被除数备份
MOV CX,5 ;循环5次
l1:div word ptr [SI] ;字除
push dx ;余数压栈
CMP CX,1
JZ l2 ;被除数为0时确保有输出
cmp dx,bx
jz skip ;不输出前面的0
l2: mov dl,al
OR DL,30H
mov ah,02h
int 21h ;输出
skip: pop ax ;余数出栈
xor dx,dx
add SI,2
LOOP l1
MOV AH,0
INT 16H
MOV AX,4C00H
INT 21H
X DW 10000,1000,100,10,1
CODES ENDS
END START本回答被提问者和网友采纳 参考技术B ;这是自动生成的代码模板
STACKS SEGMENT STACK ;堆栈段
DW 128 DUP(?) ;注意这里只有128个字节
STACKS ENDS
DATAS SEGMENT ;数据段
TEMP DB 4 DUP(?)
DATAS ENDS
CODES SEGMENT ;代码段
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS ;初始化
MOV DS,AX
;请在这里添加您的代码
MOV SI,0
MOV AX,1024D
MOV BL,0AH
MOV CX,4
NEXT: DIV BL
MOV TEMP[SI],AH
INC SI
AND AH,0
LOOP NEXT
DEC SI
MOV CX,4
DIS: MOV DL,TEMP[SI]
ADD DL,30H
MOV AH,02
INT 21H
DEC SI
LOOP DIS
MOV AX,4C00H ;退出程序
INT 21H
CODES ENDS
END START 参考技术C 不管白猫黑猫,抓住老鼠就是好猫,何必限定只能用汇编?
用C语言夹带汇编特别简单:
//打印寄存器AX内容
# include <stdio.h>
short a;
void main()
_asm mov a,ax
printf("AX=%d\n",a);
参考技术D DSPAX PROC
PUSH BX
PUSH CX
PUSH DX
PUSH BP
MOV BP,SP
MOV BX,10
XOR DX,DX
LOP:
DIV BL
OR AH,30H
MOV DL,AH
PUSH DX
XOR AH,AH
MOV CX,AX
JCXZ ENDDECODE
JMP LOP
ENDDECODE:
SUB BP,SP
MOV CX,BP
MOV AH,2
DSP:
POP DX
INT 21H
LOOP DSP
POP BP
POP DX
POP CX
POP BX
DSPAX ENDP
汇编书中“存于寄存器内的地址可用来指向内存的某个位置,即寻址”
这句话怎么理解啊?是寄存器内的地址和内存中的一个地址之间的关系好想快捷方式与程序一样吗
准确地说,是寄存器间接寻址."存于寄存器内的地址",如寄存器BX,它的值是BX=0020H;这的0020H就可以是一个地址.
当这样做:MOV AX,[BX]的时候,这时的[BX]就可以指向内存的某个位置,即DS:0020H (注:DS是默认的段地址寄存器)
我觉得你的理解也有道理:通过快捷方式找到程序,和通过放在在寄存器内的地址找到相应的内存地址是一样的. 参考技术A 就是C里面的指针,内存里面的每个单元都有一个绝对的物理地址,就好像你家一样。现在我要去你家,就先在一个地方存放你的地址,以后要访问你家就方便了。
以上是关于8086汇编如何打印寄存器内数值的主要内容,如果未能解决你的问题,请参考以下文章