鱼C论坛

 找回密码
 立即注册
查看: 2446|回复: 4

[汇编作业] 检测点10.3作业练习

[复制链接]
发表于 2020-3-5 23:33:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
assume cs:code

code segment
start:        mov ax,0
                call far ptr s
                inc ax
        s:        pop ax
                add ax,ax
                pop bx
                add ax,bx
                
                mov ax,4c00h
                int 21h
code ends
end start

;结果ax=1010h  为什么呢?

;因为在准备执行call far ptr s指令之前,ip已经指向1000:8
;所以,在执行之后,pop ax输出来的值为0008
;然后程序往下执行自加,ax=0010h
;再往下执行输出bx为1000,因为输出的是cs的值,所以bx为1000h
;最后ax=ax+bx=1010h
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-6 00:02:01 | 显示全部楼层
本帖最后由 jackz007 于 2020-3-6 00:09 编辑
1433:0000 B80000        MOV        AX,0000                              
1433:0003 9A09003314    CALL       1433:0009    ; 这里跳到 1433:0009,下一条指令的地址 (1433:0008) 就是返回地址,堆栈中就是这一对数值
1433:0008 40            INC        AX                                 
1433:0009 58            POP        AX           ; AX = 返回地址 1433:0008 的偏移值 0008
1433:000A 03C0          ADD        AX,AX        ; AX = 0008 + 0008 = 0010                     
1433:000C 5B            POP        BX           ; BX = 返回地址 1433:0008 的段地址 1433
1433:000D 03C3          ADD        AX,BX        ; AX = 0010 + 1433 = 1443
1433:000F B8004C        MOV        AX,4C00                            
1433:0012 CD21          INT        21                                 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-6 00:11:28 | 显示全部楼层

你的也没有错,但是题目出的地址是在1000:0,所以按照题目来。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-6 00:13:24 | 显示全部楼层
项羽姓秦 发表于 2020-3-6 00:11
你的也没有错,但是题目出的地址是在1000:0,所以按照题目来。

       我这是 debug 实测环境的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-6 00:23:46 | 显示全部楼层
jackz007 发表于 2020-3-6 00:13
我这是 debug 实测环境的结果。

嗯,我知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 21:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表