汇编语言中取一个DW型数的高八位,如何实现

汇编语言中取一个DW型数的高八位,如何实现,第1张

在8086中有AX,BX,CX,DX四个通用数据寄存器,他们既可以作为一个16位(DW型)寄存器,也可以分别作为两个8位寄存器使用,低8位分别是AL,BL,CL,DL,高8位分别为AH,BH,CH,DH。

你把要处理的DW型数(如0187H)存到16位寄存器中(如AX),则AH=01H,AL=87H,接下来你就可以直接使用AH中的高八位了,这是比较简单的。如果你是从存储单元获得数据,可以通过字节读取数据直接获得。

楼主所需程序如下:

图A为源程序;(注明:绿色指令(被注释的程序)为屏幕显示输出程序,楼主可要可不要,若去除注释符号“;”则在屏幕上输出显示0的统计个数。)

图B为调试过程中,在程序执行完毕退出前查询内存的存储情况。因为程序数据段定义的时候定义了19个0,所以内存中存储统计的个数为13H个,即19个。

图A:(源程序)

图B:(debug)

汇编语言是一种直接控制 CPU 运行的低级语言,主要用于描述和控制计算机硬件的运作。ROM2000H单元则可能是某个具体电子设备中的部件,如果您可以提供更多信息,我可以为您做出更准确的回答。

大家点点关注,后续有疑问可直接评论区问我,有空的话会给大家整理更详细的信息~

DATA SEGMENT

DATA1 DB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

DATA2 DB 10H DUP()

DATA ENDS

;

STACK SEGMENT PARA STACK 'STACK'

DB 100 DUP()

STACK ENDS

;

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV BX,DATA

MOV DS,BX

MOV ES,BX

MOV SI,OFFSET DATA1

MOV DI,OFFSET DATA2

MOV CX,16

REP MOVSB

RET

CODE ENDS

END START

运行后没有错误 ,你的乱码是怎么回事?另外

MOV AL,0

MOV CX,16

NEXT: MOV [SI],AL

INC AL

INC SI

LOOP NEXT

是做什么用的?

程序1:

MOV R0, #32H ;设地址指针的初值

CONT: CJNE @R0,#0AAH , NEXT ;比较查找值与指针所指单元的值,是否相等

MOV A, #0FFH ;相等,赋值0FFH

SJMP DOWN ;跳转到,保存结果

NEXT: INC R0 ;修改地址指针

CJNE R0, #42H, CONT ;指针没有超过范围,则继续

MOV A, #00H ;查找失败,将00H存入结果

DOWN: MOV 50H, A ;将比较结果存入50H单元

SJMP $ ;暂停

END

程序2:

MOV R7, #16 ;计数器赋初值,从20H~30H共16个字节

MOV R0, #32H

CONT: CJNE @R0,#0AAH , NEXT

MOV A, #0FFH

SJMP DOWN

NEXT: INC R0

DJNZ R7, CONT ;计数器减1,非零,则继续查找

MOV A, #00H

DOWN: MOV 50H, A ;将比较结果存入50H单元

SJMP $

END

以上就是关于汇编语言中取一个DW型数的高八位,如何实现全部的内容,包括:汇编语言中取一个DW型数的高八位,如何实现、汇编语言 数据段中有50个字型数据,统计其中0的数并把统计结果存在存储单元中、汇编语言将ROM2000H单元处表格内容送到等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9550686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存