微机原理的程序分析

微机原理的程序分析,第1张

TAB DB 1,2,3,4,5,6,7,8

ENTRY EQU 4 定义常量,entry为4

MOV BX,FOOSET TABtab的首偏移地址放到bx中,此时,bx指向tab中的第一个,即“1”

ADD BX,ENTRYbx加4,此时指向tab中的坦悉第五个让运乎,即‘5’

MOV AX,[BX] ax为一个字,所以把tab中的第五个和第六个悄灶放到ax中,即把 6(即06h)放到ah中,5(即05h)放到al中(高位在下,低位在上)

SUB02: 子程序

CMP STR0 1,2 比较STR0 1是谈毕激否=2

JNB Y2 如果不数槐等跳转到 Y2

JMP QUIT 跳转到 QUIT

Y2:Y2

CALL ASDF 调用 ASDF 子程含袜序

@INPUT: @INPUT

MOV AH,0 设AH为0

INT 16H 调用 16H 中断

CMP AH,10H 'Q'比较 输入值是否为 10H (字符Q键值)

JZ SSS 是跳转到 SSS

CMP AH,13H 'R' 比较 输入值是否为 13H (字符R键值)

JNZ @INPUT 不是 转到 @INPUT 循环

JMP Y2 跳转到 Y2 循环

SSS: SSS

MOV STR0 1,0 设置 STR0 1为 0

MOV FLAG,0 设置 FLAG 标志 为 0

QUIT:QUIT

XOR DI,DI 清 DI

MOV CX,80*25 设置 CX为 80*25

MOV AX,720H 设置 AX为 720H

REP STOSW 清全屏

RET 返回

MOV DX,0F100H DX=0F100H

MOV DH,[DX] DH=(0F100H)='A'=41HDX=4100H 取内存0f100h处存放的字符'A'存入DH,'A'的ASCII码为41H,DH为DX寄存器高位尘大,所以DX发生变化

MOV AH,[DX] AH=(04100H)='B'=42H 原理同上

所以正确的是AH中存放的是42H,不是41H,另外DX寄存器不能作为间接寻址寄虚粗存器,可以使用BX寄存器代差兄镇替。


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

原文地址: http://outofmemory.cn/yw/12463315.html

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

发表评论

登录后才能评论

评论列表(0条)

保存