鱼C论坛

 找回密码
 立即注册
查看: 2710|回复: 7

[已解决]萌新求助汇编语言代码正误

[复制链接]
发表于 2017-9-18 21:48:30 | 显示全部楼层 |阅读模式

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

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

x
下面是一些汇编代码,要求判断正误,并写出错误原因,我没有正确答案,不知道自己写的对不对,求助大神帮忙看看。1
MOV BL,AX
MOV AX,CS
MOV DS,ES
MOV DS,AX
MOV [100H],AX
MOV [200H],89H
MOV [200],[300H]
MOV ES,[400H],CX
IN AX,[58H]
IN EAX,3456H
IN AL,25H
IN AX,CX
OUT DX,AX
OUT 23H,AL
OUT 2323H,AX
OUT 23H,BX
ADD [300H],200
ADD [200H],[100H]
UB AX,BL
LEA AX,134H
PUSH BL
PUSH CS
POP CS
INL [BX]
DEL [200H]
再三拜谢各位大神,拜托了
最佳答案
2017-9-20 10:27:17
MOV BL,AX              ;错误,字型不匹配,AX点16位,AL为8位的
MOV AX,CS             ;正确,都是16位的
MOV DS,ES             ;错误, DS,ES不能直接赋值
MOV DS,AX            ;正确
MOV [100H],AX     ;错误,[100H]是8位的内存地址范围是0~255,100H为256了,mov [100],ax就可以
MOV [200H],89H   ;错误,同上
MOV [200],[300H] ;错误,同上
MOV ES,[400H],CX;错误,同上
IN AX,[58H]           ;错误
IN EAX,3456H       ;错误
IN AL,25H             ;正确
IN AX,CX               ;正确
OUT DX,AX           ;正确
OUT 23H,AL          ;错误
OUT 2323H,AX      ;错误
OUT 23H,BX          ;错误
ADD [300H],200    ;错误,300H超过内存地址范围,且200不能直接赋值
ADD [200H],[100H]  ;错误, 同上
UB AX,BL                 ;这个就不知道了
LEA AX,134H            ;错误
PUSH BL                   ; 错误,push应该为16位的寄存器,BL为低8位的BX寄存器
PUSH CS                   ;正确
POP CS                     ;正确
INL [BX]                   ;错误
DEL [200H]              ;错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-9-18 21:53:22 | 显示全部楼层
泣泪自顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-18 22:32:33 | 显示全部楼层
第一条就不对,类型不匹配,一下写了这么多,用debug试一下就可以咯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-19 17:35:12 | 显示全部楼层
这不是一条程序,是一套判断题,一共25道小题,每行一题。请求诸位大神逐条分析,并给出错误原因,拜托了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-19 19:28:38 | 显示全部楼层
本帖最后由 丶忘却的年少o 于 2017-9-19 21:46 编辑

MOV BL,AX        bl是一个字节,ax是二个字节,大小不匹配呀,塞不进的
MOV AX,CS        这个对的,但是反过来就不对了,cs是系统分配的
MOV DS,ES        ds,es都不是通用寄存器,不能直接赋值的,需要ax之类的中介
MOV DS,AX        这个对的
MOV [100H],AX        如果是外部编译不行,必须用通用寄存器代表地址
MOV [200H],89H        同理
MOV [200],[300H]        同理
MOV ES,[400H],CX        同理,并且es:[]才对
下面的不清楚。上面这几个应该是那样的判定
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-9-20 10:27:17 | 显示全部楼层    本楼为最佳答案   
MOV BL,AX              ;错误,字型不匹配,AX点16位,AL为8位的
MOV AX,CS             ;正确,都是16位的
MOV DS,ES             ;错误, DS,ES不能直接赋值
MOV DS,AX            ;正确
MOV [100H],AX     ;错误,[100H]是8位的内存地址范围是0~255,100H为256了,mov [100],ax就可以
MOV [200H],89H   ;错误,同上
MOV [200],[300H] ;错误,同上
MOV ES,[400H],CX;错误,同上
IN AX,[58H]           ;错误
IN EAX,3456H       ;错误
IN AL,25H             ;正确
IN AX,CX               ;正确
OUT DX,AX           ;正确
OUT 23H,AL          ;错误
OUT 2323H,AX      ;错误
OUT 23H,BX          ;错误
ADD [300H],200    ;错误,300H超过内存地址范围,且200不能直接赋值
ADD [200H],[100H]  ;错误, 同上
UB AX,BL                 ;这个就不知道了
LEA AX,134H            ;错误
PUSH BL                   ; 错误,push应该为16位的寄存器,BL为低8位的BX寄存器
PUSH CS                   ;正确
POP CS                     ;正确
INL [BX]                   ;错误
DEL [200H]              ;错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-9-20 15:27:03 | 显示全部楼层
weizhongyang 发表于 2017-9-20 10:27
MOV BL,AX              ;错误,字型不匹配,AX点16位,AL为8位的
MOV AX,CS             ;正确,都是16位 ...

多谢多谢,真心感谢!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-20 15:33:47 | 显示全部楼层
羽流云 发表于 2017-9-20 15:27
多谢多谢,真心感谢!!

不谢不谢,真的不谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 08:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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