羽流云 发表于 2017-9-18 21:48:30

萌新求助汇编语言代码正误

下面是一些汇编代码,要求判断正误,并写出错误原因,我没有正确答案,不知道自己写的对不对,求助大神帮忙看看。1
MOV BL,AX
MOV AX,CS
MOV DS,ES
MOV DS,AX
MOV ,AX
MOV ,89H
MOV ,
MOV ES,,CX
IN AX,
IN EAX,3456H
IN AL,25H
IN AX,CX
OUT DX,AX
OUT 23H,AL
OUT 2323H,AX
OUT 23H,BX
ADD ,200
ADD ,
UB AX,BL
LEA AX,134H
PUSH BL
PUSH CS
POP CS
INL
DEL
再三拜谢各位大神,拜托了

羽流云 发表于 2017-9-18 21:53:22

泣泪自顶

thunder 发表于 2017-9-18 22:32:33

第一条就不对,类型不匹配,一下写了这么多,用debug试一下就可以咯

羽流云 发表于 2017-9-19 17:35:12

这不是一条程序,是一套判断题,一共25道小题,每行一题。请求诸位大神逐条分析,并给出错误原因,拜托了

丶忘却的年少o 发表于 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 ,AX        如果是外部编译不行,必须用通用寄存器代表地址
MOV ,89H        同理
MOV ,        同理
MOV ES,,CX        同理,并且es:[]才对
下面的不清楚。上面这几个应该是那样的判定

weizhongyang 发表于 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 ,AX   ;错误,是8位的内存地址范围是0~255,100H为256了,mov ,ax就可以
MOV ,89H   ;错误,同上
MOV , ;错误,同上
MOV ES,,CX;错误,同上
IN AX,         ;错误
IN EAX,3456H       ;错误
IN AL,25H             ;正确
IN AX,CX               ;正确
OUT DX,AX         ;正确
OUT 23H,AL          ;错误
OUT 2323H,AX      ;错误
OUT 23H,BX          ;错误
ADD ,200    ;错误,300H超过内存地址范围,且200不能直接赋值
ADD ,;错误, 同上
UB AX,BL               ;这个就不知道了
LEA AX,134H            ;错误
PUSH BL                   ; 错误,push应该为16位的寄存器,BL为低8位的BX寄存器
PUSH CS                   ;正确
POP CS                     ;正确
INL                    ;错误
DEL             ;错误

羽流云 发表于 2017-9-20 15:27:03

weizhongyang 发表于 2017-9-20 10:27
MOV BL,AX            ;错误,字型不匹配,AX点16位,AL为8位的
MOV AX,CS             ;正确,都是16位 ...

多谢多谢,真心感谢!!

weizhongyang 发表于 2017-9-20 15:33:47

羽流云 发表于 2017-9-20 15:27
多谢多谢,真心感谢!!

不谢不谢,真的不谢!{:5_108:}
页: [1]
查看完整版本: 萌新求助汇编语言代码正误