Huang1234 发表于 2017-12-3 10:37:55

ah = 2640H 是如何计算的?谢谢

程序段中指令执行情况之二(原AX中的值:0000H,原BX中的值:0000H)

mov ax, 001AH         001AH            0000H
mov bx, 0026H         0040H            0026H
add al ,bl                     0040H         0026H
add ah,bl                  2640H            0026H
add bh,al                  2640H            4026H
mov ah,0                  0040H            4026H
add al,85H               00C5H             4026H
add al,93H                      ?               4026H


我想请老师解答下
add ah,bl                  2640H            0026H
add bh,al                  2640H            4026H
mov ah,0                  0040H            4026H
这些是怎么算出来的

BngThea 发表于 2017-12-3 11:50:02

ah,bh分别是ax和bx的高八位(十六进制的高两位)
而al,bl分别是ax和bx的低八位(十六进制的低两位)
无非就是对这些位置进行移动或加法操作

Huang1234 发表于 2017-12-3 17:11:09

BngThea 发表于 2017-12-3 11:50
ah,bh分别是ax和bx的高八位(十六进制的高两位)
而al,bl分别是ax和bx的低八位(十六进制的低两位)
无非 ...

你说的这些我懂,关键是:
add ah,bl    2640 是怎么得来的?bl 的低8位是0026 先送入ah吗,变成2600+al 的值0040H吗?

Huang1234 发表于 2017-12-3 17:13:57

Huang1234 发表于 2017-12-3 17:11
你说的这些我懂,关键是:
add ah,bl    2640 是怎么得来的?bl 的低8位是0026 先送入ah吗,变成2600+al...

那这个
add bh,alBX 的值 是4026 是怎么算出来的?谢谢

xiaohaituan 发表于 2017-12-4 00:48:38

Huang1234 发表于 2017-12-3 17:11
你说的这些我懂,关键是:
add ah,bl    2640 是怎么得来的?bl 的低8位是0026 先送入ah吗,变成2600+al...

楼上说的很清楚啊,ax, bx是16位寄存器,ax可以分为两个8位的分别为高位ah和低位al,ax=001Ah说明高位存放的是00h低位存放的是1Ah,因为是十六进制的换成二进制的就是八位了,movax,001A,movbx,0026, 就可以知道al=1Ah,bl=26h ,addal,bl为1A+26=40h放进al寄存器,下面同理
页: [1]
查看完整版本: ah = 2640H 是如何计算的?谢谢